[iPhone] background task を使って親機のデータを取り出す (Apple Watch)

openParentApplication を使ってApple Watchから iPhoneのデータを取得する方法 を試しましたが、これ だけではどうも使えないようです

以下 watchOS1.2 のケースです
watchOS 2.0 では使えません
watchOS 2.0 では
Watch Connectivity framework
のWSessionを使うことになります
sendMessage 即座にメッセージを送る

 

  1. Apple WatchからiPhoneアプリを起動できない
  2. iPhone アプリをバックグラウンドでの処理はさせられる
  3. iPhone アプリはバックグラウンドに一旦は入るがすぐにサスペンドする

apple devforum によると

– If you are using openParentApplication:reply:, make sure you create a background task immediately upon entering application:handleWatchKitExtensionRequest:reply:. This will make sure that the iPhone app gets time in the background instead of being suspended again. Additionally, wrap the call to endBackgroundTask: in a dispatch_after of 2 seconds to ensure that the iPhone app has time to send the reply before being suspended again.

だそうです
backround task を生成して確実に
iPhoneでの処理がなされるようにしないといけないのですね
一連の流れはこうなります

これをまとめると
openParentApplication のコードの
AppDelegate.swift だけ以下のように変更します

これを確認するためには
iPhone アプリがフォアグランドやバックグラウンドにいる状態ではできません
確実な方法は、両方とも再起動してWatchから親機のデータ取得ができるか
テストしてみるのがいいでしょう

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

シェアする

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

フォローする