WatchOS 2.1 および iOS 9 で WatchConnectivity フレームワークを使用すると問題が発生します。transferUserInfo() を使用して、iOS アプリから Watch にデータを送信していますが、動作します。問題は帰り道にあります。ユーザーがウォッチのビューでボタンを押した後に更新を送信しようとすると、通信がたまにしか機能しません。たとえば、通常、最初は機能し、それ以外の場合はメッセージが失われたように見えます。さまざまな解決策 (sendMessage、updateContext、ecc) を試しましたが、常に同じ問題が発生しています。誰でも私を助けることができますか?コードは次のとおりです。
//ウォッチ側:
@IBAction func completeButtonPressed() {
if let index = isActivityTitled(activityTitle, inArray: todayActivities) {
activityCompleted = !activityCompleted
todayActivities[index].completed = activityCompleted
}
if self.activityCompleted == false {
self.completeButton.setBackgroundImage(UIImage(named: "completedButton"))
self.completeButton.setTitle("COMPLETA")
} else {
self.completeButton.setBackgroundImage(UIImage(named: "rectButtonGray"))
self.completeButton.setTitle("COMPLETATO")
}
if self.session != nil {
session.transferUserInfo(["WatchUpdatedActivityTitle":self.activityTitle])
}
}
// iOS 側: (AppDelegate でコールバックを処理します)
func session(session: WCSession, didReceiveUserInfo userInfo: [String : AnyObject]) {
print("Message From Watch:")
print(userInfo["WatchUpdatedActivityTitle"])
if let actTitle = userInfo["WatchUpdatedActivityTitle"] {
self.activitiesList = ActivitiesList.sharedActivitiesList
let updatedActivity = self.activitiesList.getActivityTitled(actTitle as! String)
if updatedActivity?.completed == false {
updatedActivity?.completed! = true
} else {
updatedActivity?.completed! = false
}
self.activitiesList.updateActivity(updatedActivity!, withReorder: true)
dispatch_async(dispatch_get_main_queue()) {
NSNotificationCenter.defaultCenter().postNotificationName("reloadTableViews", object: nil)
}
}
}
問題がすぐに解決することを願って、どうもありがとうございました。