[iPhone] Watch Connectivity: updateApplicationContext (Apple Watch)

WCSessionには双方向でreachableであることを確認して
転送する sendMessage, sendMessageData があります

一方、バックグラウンドで送信をOSに任せる方法として
updateApplicationContext があります

sendmessage2_2
wdsession_b

iOSでバックグラウンドから送信
時間差でGlanceで取得

Swift 2.1
Xcode 7.1
iOS 9.1
watchOS 2.0.1

 

updateApplicationContext

 
Appleのドキュメントには幾つかの説明がありますが
かいつまんでこのような内容になると思います
(細かいニュアンスには責任持てません、直接英語を見てください)

  • updateApplicationContext
    • 辞書型の簡単な情報転送
    • 受け手側は同期、アップデートとして使用する
    • データは揮発性volatileで上書きされる
    • データ送信はバックグラウンドでなされる
    • 「reachable」でなくてもcallできる

 
iOS側はAppDelegateの
didFinishLaunchingWithOptionsから
updateApplicationContext()を実行

Glanceで取得

まとめるとこうなります
iOS側
AppDelegate.swift

Watch側
GlanceController.swift

iOS側はこのままでは1回バックグラウンド処理をして終わります
処理を継続させなる場合はBackground Fetchなどを使うことになります

Watch側はGlanceControllerにのみ
session.activateSession()を実行しています

InterfaceContorllerにも実装すると
WCSessionのオブジェクトを複数作ることになり
問題が発生することがあります

その場合はExtenstionGelegateに実装することになります

ページのトップへ戻る
 
sponsored link

シェアする

  • このエントリーをはてなブックマークに追加

フォローする