以下の様にiPhene側のコードを書きました。
Swift
1//送信側 2if (WCSession.isSupported()) { 3 session = WCSession.default 4 5 session?.delegate = self 6 session?.activate() 7 } 8 9session!.transferUserInfo(["titles": List_watch,"Colors_watch": c_w])
watch側は以下の様にします。
Swift
1//受信側 2 3func session(_ session: WCSession, 4// didReceiveUserInfo userInfo: [String : Any] = [:]) { 5 6 7 //何かしらの処理 8 9} 10
この様にするとうまくいきます。しかしInteractive messagingで通信をしたくて以下の様にしました。
Swift
1//送信側 2if (WCSession.isSupported()) { 3 session = WCSession.default 4 5 session?.delegate = self 6 session?.activate() 7 } 8 9 session!.sendMessage(["titles": List_watch,"Colors_watch": c_w], replyHandler: { replyDict in }, errorHandler: { error in 10 print("エラー、送れてない,(error)") 11 12 })
Swift
1//受信側 2 3func session(_ session: WCSession, didReceiveMessage message: [String: Any], replyHandler: @escaping ([String: Any]) -> Void) { 4 5 6 //何かしらの処理 7 8} 9
するとerrorHandlerが実行されてしまいます。また、そのエラーは以下の通りです。
エラー、送れてない,Error Domain=WCErrorDomain Code=7004 "WatchConnectivity session has not been activated." UserInfo={NSLocalizedRecoverySuggestion=Activate the WatchConnectivity session., NSLocalizedDescription=WatchConnectivity session has not been activated., NSLocalizedFailureReason=Function activateSession has not been called.}
セッションがアクティベイトされていないという様な事が言われていますが、User Info Transfeの時はセッションができているから通信できているわけだと思いますし、なぜこの様になるのでしょうか?
あなたの回答
tips
プレビュー