ホスト アプリとアプリ拡張機能の間で NSUserDefaults データを共有することに関する SO の他のすべての投稿を見てきましたが、私のものはまだ機能しません。ここに私がやったことすべてがあります:
- 拡張機能とホスト アプリの Xcode の [機能] タブでアプリ グループを有効にします。
- グループ名を「group.com.mycompany.foo」に設定し、拡張機能とホストアプリがグループに追加されていることを確認します。
- 「com.apple.security.application-groups」キーがアプリ グループ名に設定された両方の権限ファイルが存在することを確認しました。(価値があるのは、拡張機能とホストアプリの間で共有キーチェーン機能も使用していて、それが機能しているため、これが資格の問題であるとは思わないことです)
- すべてのプロビジョニング プロファイルを再生成しました。実際、アプリ グループを設定した後、すべての証明書を取り消して、すべてのプロファイルを再生成しました。
結局のところ、このコードはまだ機能しません。
// in the host app
NSUserDefaults *testDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.mycompany.foo"];
[testDefaults setObject:@"TEST" forKey:@"foo"];
[testDefaults synchronize];
その後:
// in the extension
NSUserDefaults *testDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.mycompany.foo"];
NSLog(@"%@", [testDefaults objectForKey:@"foo"]);
その結果:
(null)
Xcode の環境設定を見ると、次のアイコンに気付きますが、「アプリ グループ」アイコンはありません。
しかし、前に述べたように、アプリ グループをセットアップした後、キーチェーン、証明書、およびプロビジョニング プロファイルをクリアするところまで行きました。これが実際に問題である場合、資格をプロファイルに追加するにはどうすればよいですか?
私は何が欠けていますか?私はアイデアから新鮮です。
ヘルプ?
編集: アクセス グループは、WatchKit 拡張機能ではなく、Today & Safari 拡張機能で機能しています。理由はわかりませんが、すべてのビルド設定が同じように構成されているようです。
編集 2 : 私の機能が適切に設定されていないと主張する人のために、ここにスクリーンショットがあります: