3

これに関するいくつかの質問を見て、提供されたすべての回答を試しましたが、まだうまくいきません。

iPhone アプリとその WatchKit 拡張機能の間でいくつかの小さなデータ (文字列と BOOL) を共有しようとしています。(違いがある場合、情報は WK アプリの GlanceController によって読み取られています)

開発者サイトからアプリ グループ (group.com.theYawns.Sorcerers-Apprentice) を作成しました。「アプリ ID」を見ると、アプリ用に 2 つの同一の ID (com.theYawns.Sorcerers-Apprentice) と拡張用に 1 つ (com.theYawns.Sorcerers-Apprentice.watchkitextension) があるように見えます。これらのそれぞれで「アプリ グループ」が有効になっており (開発と配布の両方で)、アプリ ID を編集するとアプリ グループが選択されます。

アプリと拡張機能の両方の機能で「アプリ グループ」をオンにしました。ビルドごとではなく、1 日に数回、[機能] タブにアクセスして見ると、資格ファイルに「アプリ グループを追加する」資格を示す赤い感嘆符が表示されます。資格ファイルを見ると資格があり、[問題を修正] をクリックすると赤い感嘆符がチェックマークに変わります。しかし、これを 1 日に複数回行う必要があるという事実は、何かがおかしいのではないかと懸念しています。

XCode の設定でプロビジョニング プロファイルを何度も更新しましたが、資格の下にアプリ グループのアイコンが表示されませんが、ホバーすると表示されるツールチップにアプリ グループが表示されます。

私のアプリと拡張機能の両方で、ユーザーのデフォルトへの参照を取得します

NSUserDefaults *sharedAppDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.theYawns.Sorcerers-Apprentice"]; 

[sharedAppDefaults synchonize]また、フラッシュされていない場合に備えて、各書き込みの後、WatchKit が読み取りを試みる前にa を追加しようとしました。(違いはありませんでした)。

私の WatchKit 拡張バンドル ID は、別のスレッドで見た回答の 1 つである iPhone アプリ バンドル ID とは異なります。

また、10 秒ごとにグランスを更新する NSTimer を追加したので、変更の取得にタイミングの問題があった場合は、更新サイクル 1 つか 2 つ後に自動的に解決されると思いますが、そうではありません。

本当に困惑しています...他のスレッドからの回答によって他の人が問題を解決したようですが、私にとってはうまくいきませんでした。

私が検索した他のスレッドは次のとおりです。

WatchKit 拡張機能内でアプリ グループが機能しないのはなぜですか?

https://stackoverflow.com/questions/27047455/how-to-shared-storage-between-app-and-extension-with-app-group-and-

WatchKit NSUserDefaults および NSKeyedUnarchiver の問題

4

2 に答える 2

2

OK、Apple 開発者フォーラムで回答を見つけました。

XCodeターゲットの「機能」タブから、すべての正しい資格が設定されていることがわかりました。そして、プロジェクト内の 'Entitlements' ファイルを確認して開き、正しく設定されていることを確認できました。

しかし -- アプリ ターゲットの [ビルド設定] タブの [コード署名] セクションを見てみると、権利ファイルが表示されていませんでした。(WatchKit 拡張機能ではすべて正しく表示されますが、メインの iPhone アプリでは表示されません)。

Code Signing の下に資格ファイルの名前を挿入すると、すべてが機能し始めました。

これは私にはバグのように思えます。同じターゲットの「Capabilities」タブと「Build Settings」タブが異なる場所でエンタイトルメントを探す必要があるとは思いません。しかし、他の誰かがこれに遭遇した場合に備えて、私のために働いた答えをここに投稿したかった.

要約: 資格が正しいことを確認するには、Capabilities でスイッチが適切に設定されていることを確認する必要があります。また、Build Settings / Code Signing で参照されている資格ファイルを確認する必要があります。

于 2015-03-17T17:28:56.207 に答える
0

アプリ拡張機能のプロビジョニング プロファイルに資格を追加する必要があります。これを行うには、開発者アカウントにログインして資格を追加します。その後、最新のプロビジョニング プロファイルをダウンロードします。アプリ グループが有効になっているかどうかを確認するには、ダウンロードしたプロビジョニング プロファイルを「TextEditor」で開き、「アプリ グループ」を検索します。適切に実行した場合、これにより結果が表示されます。これらの新しくダウンロードしたプロビジョニング プロファイルを使用すると、機能にチェック マークが表示されます。

于 2015-03-17T16:59:56.450 に答える