2017年1月29日日曜日

Watch Connectivityがうまく動作してくれなかった話

iPhone と Apple Watch のデータ送受信で使う、WatchConnectivity
その中の通信方法である、updateApplicationContext(_:) がうまく動かなくてしばらくハマった。

sendMessage(_:replyHandler:errorHandler:) は正常に動作するので、activate() のし忘れということも無い状況。
処理を行うタイミングを色々変えてもダメ。

いろいろ探ってみてわかった原因は...

送信内容が、前回送ったものと同じの時、送信されない

ということ。
(sendMessageは、同じ内容でも送信される)

状況をもっと正確に言うと、
アプリをインストール後、1回目の送受信はうまくいく。
だが、2回目以降で、送信内容が同じの場合、送受信が全くされない。
違う内容を送信すると、送受信できる。

「前回と同じ内容なんだがから、送受信しなくてもいいんじゃない?」 という発想の仕様なのだろうか。
だが、Apple Watchのアプリを再インストールした時など、送信先の状況が変わっている可能性だってあるのに...!

以前(watchOS2? XCode7?)は、同じデータ内容でも送受信できてた気がするのだが、気のせいだろうか...?


• • •