apple watchのアプリを、バックグラウンドでも処理を続けたい
初めてapple watchのアプリ開発を行っています。アプリを閉じても一定の周期で処理を行いたいのですが、実機テストではバックグラウンド処理がされません。シミュレータでは、うまくいきました。
iosでのAppDelegate.swiftファイルではこのようにすることで処理できています。
swift
1func applicationWillResignActive(_ application: UIApplication) { 2 print("willResignActive") 3 4 5 self.backgroundTaskID = application.beginBackgroundTask(){ 6 [weak self] in 7 application.endBackgroundTask((self?.backgroundTaskID)!) 8 self?.backgroundTaskID = UIBackgroundTaskIdentifier.invalid 9 } 10 11 timer = Timer.scheduledTimer(withTimeInterval: 10, repeats: true, block: { _ in 12 self.oldBackgroundTaskID = self.backgroundTaskID 13 14 // 新しいタスクを登録 15 self.backgroundTaskID = application.beginBackgroundTask() { [weak self] in 16 application.endBackgroundTask((self?.backgroundTaskID)!) 17 self?.backgroundTaskID = UIBackgroundTaskIdentifier.invalid 18 } 19 // 前のタスクを削除 20 application.endBackgroundTask(self.oldBackgroundTaskID) 21 print("タスクを削除") 22 }) 23 }
watchKit ExtensionフォルダにあるExtensionDelegate.swiftファイル
swift
1 func applicationWillResignActive() { 2 print("willresignactive") 3 timer = Timer.scheduledTimer(withTimeInterval: 5, repeats: true, block: {_ in 4 print("バックグラウンド処理?") 5 }) 6 7 }
あなたの回答
tips
プレビュー