今回はApp Groupという機能を使った共有方法を利用しました。
App Groupとはアプリ間でデータのやり取りができる機能で、ウィジェットアプリにデータを渡す時にも利用します。
App Groupの設定
最初にApp Groupを使う為の設定をします。
まずは下記の画面でApp GroupをOnにします。
設定をOnにした後はApp Groupsの追加します。
AppGroupsの中にある+ボタンを押下してAppGroupsの名前を追加します。
今回は試しにgroup.datas
という名前で登録しました。
設定通常アプリのTargetとAppleWatchのExtensionのTargetの2箇所に設定する必要があるので注意が必要です。
それとProvisioningProfileもAppGroupの設定を反映したものを再取得する必要があるので、そちらも気をつけないといけません。
使い方
使い方はとても簡単で、下のように先ほど設定した名前でUserDefaultsを作って値をセットするだけです。
これで両方で値の受け渡しをする事ができます。
それとNSString以外は渡せないようなので注意が必要です。
// iPhone側で値をセットする NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.datas"]; [defaults setObject:@"test" forKey:@"userInput"]; [defaults synchronize];
// AppleWatch側で値を取得する NSUserDefaults *defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.datas"]; NSString *text = [defaults stringForKey:@"userInput"];
AppleWatch側からiPhoneへの全く同じ方法で値を渡す事ができます。
その他のiPhone/AppleWatch間の値の渡し方
App Groupを使えばファイルの受け渡しも可能です。
試してはいないのですが、ファイルの受け渡しを利用してCoredataの共有もできるようです。
App Group以外でも、通知を使ったデータのやりとりができるようです。
そちらも機会あれば試してみたいと思います。