WatchKit1ではApp Groupsでデータ共有ができていましたが、WatchKit2ではOSの仕組みが変わった事によって使えなくなりました。
代わりにWatchKit2から使えるようになったWatch Connectivityという機能を試してみました。
準備
プロジェクトにWatchConnectivity.frameworkを追加します。
iPhoneからAppleWatchにデータ転送する方法
iPhone側でやること
適当な箇所でセッションをアクティベートします。
自分はAppDelegateのapplication:didFinishLaunchingWithOptionsでアクティベートしました。
if WCSession.isSupported() { let session = WCSession.defaultSession() session.delegate = self session.activateSession() }
実際にデータを転送する処理は以下の通りです。
_ = try? session.updateApplicationContext(["sample": "data"])
AppleWatch側で対応すること
AppleWatch側でも同様にsessionをactivateする必要があります。
if WCSession.isSupported() { let session = WCSession.defaultSession() session.delegate = self session.activateSession() }
受け取りは以下のdelegateメソッドで行います。
iPhone側からデータを送信すれば以下メソッドが呼ばれ、applicationContextに送信したデータが入っているはずです。
func session(session: WCSession, didReceiveApplicationContext applicationContext: [String : AnyObject]) { }
AppleWatchからiPhoneへのデータ転送もupdateApplicationContextメソッドを使えば実現できます。