iOSアプリとwatchKitをsendMessageでシンプルに1行の通信を実装しています。iOSアプリがWatch-WatchKitとの通信が1分後にスリープ状態になる
問題は次のとおりです。 - 通信は継続的です。 ユーザーがappleWatchのボタンを押すと、Phone e.t.cで同じ操作が行われます。 残念ながら、2つか3つのアクションの後に - iOSアプリが応答を停止します。 フォーラムのいくつかでアドバイスされているように、私はbackgroundTaskWithExpirationHandler
を実装しましたが、動作しません(約束した3分のタイムアウトを与えません)。
はここAppDelegate
func session(session: WCSession, didReceiveMessage message: [String : AnyObject]) {
//recieve messages from watch
print(message["b"]! as? String)
let sweetN = message["b"]! as? String
//var sweetB = message["abs"]! as? [Int : Bool]
dispatch_async(dispatch_get_main_queue(), {
let taskID = self.beginBackgroundUpdateTask()
if sweetN == "peeks"{
if WCSession.isSupported(){
let message = [ "gettingData": "datareceived" ]
session.sendMessage(message, replyHandler: { replyDict in }, errorHandler: { error in })
}
}
self.endBackgroundUpdateTask(taskID)
})
}
func beginBackgroundUpdateTask() -> UIBackgroundTaskIdentifier {
return UIApplication.sharedApplication().beginBackgroundTaskWithExpirationHandler({})
}
func endBackgroundUpdateTask(taskID: UIBackgroundTaskIdentifier) {
UIApplication.sharedApplication().endBackgroundTask(taskID)
}