質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

1回答

1479閲覧

Swift バックグラウンドでの定期処理

komasannkomatta

総合スコア28

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2018/09/23 04:43

swiftで、日時を設定し、その日時になればサーバーへ情報取得を行う様にしたいのですが、方法がわかりません。
ローカル通知を使えばいいのでしょうか。
ローカル通知だと、指定日時に通知のポップアップが上がってしまう認識なのですが、通知ウインドウなしでローカル通知の日時指定を行うことができるのでしょうか。

やりたい事
1 UIにて曜日、時間を指定
2 (アプリが終了、またはバックグラウンド)
3 指定時間にサーバへ情報取得(http)
4 サーバーより取得した情報をpush通知

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

Timerを使えば、Dateを指定して実行することができます。
https://developer.apple.com/documentation/foundation/timer/2091887-init

一例:

Swift

1var timer: Timer! 2 3func applicationDidFinishLaunching(_ notification: Notification) { 4 var set = Set<Calendar.Component>() 5 set.insert(.year) 6 set.insert(.month) 7 set.insert(.day) 8 set.insert(.hour) 9 set.insert(.minute) 10 var components = Calendar.current.dateComponents(set, from:Date()) 11 components.day = components.day! + 1 12 components.hour = 0 13 components.minute = 0 14 let date = Calendar.current.date(from:components)! 15 NSLog(date.description(with:Locale.current)) 16 timer = Timer(fire:date, interval:86400.0, repeats:true) { (timer) in 17 DispatchQueue.global(qos:DispatchQoS.QoSClass.background).async { 18 NSLog("Run at 00:00 everyday") 19 } 20 } 21 let loop = RunLoop.current 22 loop.add(timer, forMode:RunLoop.Mode.default) 23} 24 25func applicationWillTerminate(_ notification: Notification) { 26 timer.invalidate() 27} 28 29

投稿2018/09/23 08:25

hohokihai

総合スコア56

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

komasannkomatta

2018/09/26 01:30

ご回答ありがとうございます。 また、ご連絡がおそくなり大変申し訳ございません。 お教えいただきましたtimerを実装してみたのですが、バックグラウンド状態になった際に、とまってしまいます。 バックグラウンド、アプリ終了時でも実行されるようになにか、設定等が必要なのでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問