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の名前を指定して、新規オブジェクトを生成しましょう。
NSUserDefaults* sharedDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.blogspot.safxdev.miodashboard"];
あとは、通常のNSUserDefaults
と同じように利用するだけです。
// データの保存 [sharedDefaults setObject:userName forKey:@"userName"]; // データの取得 NSString* userName = [sharedDefaults objectForKey:@"userName"];
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。