[iPhone] 親機のデータを取り出すopenParentApplication (Apple Watch)

Apple Watch から親機の iPhone のアプリのメソッドを動かして
データを取得するために openParentApplication() が使えます

OS2からはopenParentApplication は使えません
WCSession の sendMessage などを使います
watch側でアプリが実行されるようになったので
WatchConnectivity.frameworkに変わったようです
そもそも、openParentApplicationには問題がありましたから
 
例として、親機のバッテリー残量をWatchで表示させる
アプリを作ってみます

iPhone6_black
openParent1

 
親機には何も表示させません

openParentApplication

 

InterfaceController

 
openParentApplication は WKInterfaceController class のメンバーで
メソッドの宣言はこのようになります
 

  1. userInfo は [Key, Value] の Dictionary型で親機に送ります
  2. reply は親機からのDictionary型での戻りです

InterfaceController.swift

 
後は、Label を interface.storyboard に置き紐付けします
Label を2行にしたいので Lines を「2」に設定
 

AppDelegate

 
一方、親機側でWatchからのリクエストを受けるのは
AppDelegate です
 

 

  1. userInfo はWatchからの [Key, Value] のDictionary
  2. reply はWatchへのDictionary型での返しです

 
AppDelegate.swift

 
ViewController のインスタンスを生成して、
バッテリーレベルを読み出すメソッドを呼び出し
値を Watch に返します
 

ViewController

 
AppDelegate からバッテリーレベルを呼び出すメソッドを記述します
ViewController.swift

Watch からの deictionary は今回はあまり使いませんでしたが
親機にデータを送ることを想定して作れそうです

但し、これだけでは実機ではうまくいきません
今更ですが
シュミレータではOKです
バックグラウンド作業での実機特有の挙動に対応しないといけません
background task を使って親機のデータを取り出す

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

シェアする

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

フォローする