SWIFT初心者です。しつこく初歩的なことを質問してしまうかもしれませんが、よろしくお願いします。
<やりたいこと>
設定した時間になると通話がくるアプリを作りたいと思っています。
下記のブログで、通話がくるUIが出たという記事を見つけました。
https://qiita.com/k-boy/items/ffc03b0fa562330d704c
似たようなフリーのアプリも出ているのですが、広告が鬱陶しく自分の思ったようなものが欲しくて作成してみたいと思った次第です。
現在はタイマーアプリと組み合わせて作成しています。
CALLKITとうまく組み合わせたものを作ってみたいのですが、
教えていただけますでしょうか。
<現在の進捗およびアプリの仕様>
現在のアプリ構成は画面は2画面あります。
起動した時に開くメイン画面
ー時間の経過を表示と途中で止めれるようにストップボタンを表示
時間の設定の画面
ーPickerによって時間を選択する
ー時間を選択し確定ボタンを押すと画面はメインの画面に戻り、時間の経過がスタートする。
時間が来ると時間経過が止まる仕組みになっています。
ーーーーーーここまではできていています。
ここから先、下記を行いたい
・時間になるとUIKITを起動させて意識的に着信が来たかのようにしたい
・具体的に着信お画面に移動しバイブ+着信を流す仕様にしたい
・ストップボタンを押すとメインの画面に戻る仕様にしたい
メイン画面のプログラムを捧持します。
ここでどのようにプログラムを加えれば良いか教えていただけますでしょうか。
よろしくお願いいたします。
<メイン画面のプログラム>
import UIKit
class ViewController: UIViewController {
//タイマーの設定 var timer : Timer? //カウント(経過時間の変数を作成”) var count = 0 //設定値を扱うキーの設定 let settingKey = "teimer_value" override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. //初期値の設定 let settings = UserDefaults.standard //初期値の登録 settings.register(defaults: [settingKey:10]) } @IBOutlet weak var CountdownLabel: UILabel! @IBAction func StartB(_ sender: Any) { if let nowTimer = timer{ //実行中はスタートしない if nowTimer.isValid == true{ //何も処理をしない return } } //タイマーをスタート timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(self.timerInterrupt(_:)), userInfo: nil, repeats: true) } @IBAction func StotB(_ sender: Any) { //timerをアンラップしてnowtimerに代入 if let nowTimer = timer{ //もしタイマーが実行中だったら停止 if nowTimer.isValid == true{ //タイマー停止 nowTimer.invalidate() } } } //画面を更新する func displayUpdate() -> Int{ //Userdefaultsのインスタンスを作成 let settings = UserDefaults.standard //取得した秒数をタイマーバリューに渡す let timerValue = settings.integer(forKey: settingKey) //残り時間を作成 let remainCount = timerValue - count //残り時間をラベルに表示 CountdownLabel.text = "(remainCount)秒" //戻り値を設定 return remainCount } //経過時間の処理 @objc func timerInterrupt(_ timer:Timer){ //countに+1する count += 1 //remainCount0以下の時てタイマーを止める if displayUpdate() <= 0{ //初期化処理 count = 0 //タイマー停止 timer.invalidate() } } //画面の切り替えるタイミングで処理を行う override func viewDidAppear(_ animated: Bool) { //カウント(経過時間)をゼロにする count = 0 //タイマーの表示を更新する _ = displayUpdate() }
}
ここで以上となります。
あなたの回答
tips
プレビュー