App Extensionを作ったりしていると、本体アプリのデータを利用したくなることがあります。
そのための手段のひとつに、App GroupsとNSUserDefaultsを利用する方法があります。 同一デベロッパID上でのアプリ間のデータ共有を行うことができます。
利用するための手順は、次のように非常にシンプルです。
- XcodeでApp Groupsを取得する
- 共有したいアプリ同士に同じApp Groupsを追加する
NSUserDefaults initWithSuiteName:
でデータを保存/取得するコードを書く
App Groupsの取得
Xcode上の各ターゲットのCapabilitiesにApp Groupsという項目がありますので、それをONにします。
すると、プロビジョニングで利用するチームを選択するように言われるので選択します。
続いて、App Group名を登録します。一意の名前にするために、DNS風に書くほうがよいみたいです。
無事追加されました。
なお、App Groupを設定したアプリには「<ターゲット名>.entitlements」というplistファイルが生成されています。
アプリへのApp Groupsの追加
データを共有したい他のアプリでもApp GroupsをONにして、App Groupを追加します。
NSUserDefaults initWithSuiteName:
設定したApp Groupsを利用して、NSUserDefaults
を使います。
initWithSuiteName:
でsuitename
にはApp Groupの名前を指定して、新規オブジェクトを生成しましょう。
1 | NSUserDefaults* sharedDefaults = [[ NSUserDefaults alloc ] initWithSuiteName : @"group.com.blogspot.safxdev.miodashboard" ]; |
あとは、通常のNSUserDefaults
と同じように利用するだけです。
1 2 3 4 5 | // データの保存 [sharedDefaults setObject :userName forKey : @"userName" ]; // データの取得 NSString* userName = [sharedDefaults objectForKey : @"userName" ]; |
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。