WatchConnectivityのApplication Contextを用いてwatch -> iPhone間の通信をしたいです。
http://program-life.com/251
以上のサイトを参考にし、以下の様に書きました。
Swift
1//送信側 Apple Watch 2 3 4override func awake(withContext context: Any?) { 5 super.awake(withContext: context) 6 7 /********************WatchConnectivity***********************/ 8 if (WCSession.isSupported()) { 9 // デバイスが Watch Connectivity に対応してる場合 10 let session = WCSession.default 11 session.delegate = self 12 session.activate() 13 } 14 15 16 do { 17 let context = ["time_start":true] 18 try WCSession.default.updateApplicationContext(context) //ここは実行されている 19 20 } catch { 21 print("error") 22 } 23 24 /********************WatchConnectivity***********************/ 25}
しかし受信側の関数が実行されていない様です。
受信側は以下の様にしています。
Swift
1//iPhone側 VC 2 3 override func viewDidLoad() { 4 super.viewDidLoad() 5 6 7 /****************watch**********************/ 8 if (WCSession.isSupported()) { 9 let session = WCSession.default 10 session.delegate = self 11 session.activate() 12 } 13 14} 15func session(session: WCSession, didReceiveApplicationContext applicationContext: [String : AnyObject]) { 16 17//処理 18}
上記のサイトのUser Info Transferで行なった場合はブレイクポイントを打って確認すると、受信側の関数は送信が行われるとすぐ実行されていましたがApplication Contextの方では受信側の関数が実行されません。これはどうしてでしょうか?
あなたの回答
tips
プレビュー