iPhone と Apple Watch のデータ送受信で使う、WatchConnectivity。
その中の通信方法である、updateApplicationContext(_:) がうまく動かなくてしばらくハマった。
sendMessage(_:replyHandler:errorHandler:) は正常に動作するので、activate() のし忘れということも無い状況。
処理を行うタイミングを色々変えてもダメ。
いろいろ探ってみてわかった原因は...
送信内容が、前回送ったものと同じの時、送信されない
ということ。
(sendMessageは、同じ内容でも送信される)
状況をもっと正確に言うと、
アプリをインストール後、1回目の送受信はうまくいく。
だが、2回目以降で、送信内容が同じの場合、送受信が全くされない。
違う内容を送信すると、送受信できる。
「前回と同じ内容なんだがから、送受信しなくてもいいんじゃない?」 という発想の仕様なのだろうか。
だが、Apple Watchのアプリを再インストールした時など、送信先の状況が変わっている可能性だってあるのに...!
以前(watchOS2? XCode7?)は、同じデータ内容でも送受信できてた気がするのだが、気のせいだろうか...?
Watch Connectivityがうまく動作してくれなかった話
• • •