web-dev-qa-db-ja.com

iOS8拡張機能には独自のプロビジョニングプロファイルが必要ですか?

IOS 8拡張機能を起動していますが、デバイスで実行できません。実行しようとしたときのエラーは次のとおりです。

一致するプロビジョニングプロファイルが見つかりません

ビルド設定(「ExtensionName」)で指定されたプロビジョニングプロファイルのAppIDはnet.company.AppNameバンドル識別子と一致しませんnet.company.AppName.ExtensionName。 Xcodeは、Member Centerから新しいプロビジョニングプロファイルをダウンロードすることでこの問題を解決できます。

  1. メインアプリと拡張機能の両方に個別のプロビジョニングプロファイルが必要ですか?
  2. バンドル識別子を共有する必要がありますか(デフォルトでは、バンドル識別子に拡張子名が追加されるため、おそらくそうではありません)?
  3. 別のバンドル識別子がある場合、プロビジョニングプロファイルにどのように反映されますか(別のバンドル識別子がある場合)?
42
Neil Coxhead

Xcodeはそのような方法を好むように見えますが、アドホックまたはApp Storeへのリリースを行うまで、ワイルドカードプロファイルの使用を妨げるものは何もありません。しかし、質問のポイントまで、あなたが持っているすべてのターゲットには、プロファイルとバンドルIDが必要です。そうです、あなたはあなたの拡張機能に別のプロビジョニングプロファイルを「必要」としますが、私はAppleこのプロセスを合理化することを期待しています。

全体として、プロビジョニングプロファイルが必要になるまでは、WildCard開発者プロファイルを使用することをお勧めします。これはすべてベータ版であり、彼らはまだほとんどすべてに取り組んでいることを忘れないでください。

25
Oxcug

App Extensions に関するこのドキュメントを見つけました。 20ページの最後を読んだ場合、同じ配布証明書を使用することが実際に提案されているように思えます。先に進み、Today Extensionのバンドル識別子を変更して、アプリケーションを拡張しました。例えば、 com.DeveloperName.AppName.TodayExtension、それに対応するアプリIDを 開発センター に作成し、そのための配布プロファイルを作成しました。私のアプリ + Quotes は、次の手順に従って正常に更新されました。アプリや拡張機能に関する問題は発生していませんが、拡張機能に正しいプロビジョニングプロファイルを自動で割り当てようとすると、Xcodeが少し混乱するようです。それらを手動で選択すると、これが解決します。

10
Daniel Storm

拡張機能は、ホストアプリとは別のターゲットです。それらは、異なるバンドル識別子と異なるプロビジョニングプロファイルを持つ別個のアプリであるかのように扱う必要があります。

拡張機能とホストアプリが同じコンテナーにアクセスできるように、有効化した機能(たとえば、App Group)をテストする必要がある場合があるため、ワイルドカードを使用するのではなく、テスト中に作成するのが最適です。

ホストアプリと拡張機能で機能を有効にしたい場合は、すべての機能を個別に有効にする必要があります。

8
honcheng

拡張機能用に別のプロビジョニングプロファイルが必要ですが、メインアプリに同じ証明書が必要です。新しいプロビジョニングプロファイルを作成する場合、拡張機能のアプリIDもリストに表示され、それを選択して、新しいプロビジョニングプロファイルの作成に進みます。

また、拡張機能のターゲットでそのプロビジョニングプロファイルを選択します。

enter image description here

5
Vaibhav Saran

App Storeにプッシュする必要があるまで、「サインインの自動管理」を使用するだけです。これは、シミュレータですぐに使用できますが、まだデバイスで試していません。

Appstoreビルドのいくつかのポインター:

  1. 通知拡張機能ごとに1つのワイルドカードIDを作成しましたが、このワイルドカードバンドルIDのプレフィックスは、プレフィックスとしてアプリのバンドルIDと一致する必要があります。このようになっていない場合、このエラーが発生します:"埋め込みバイナリのバンドル識別子には、親アプリのバンドル識別子の接頭辞がありません"。したがって、アプリのbundle-idが"com.companyName.appName"の場合、拡張機能のワイルドカードbundle-idは"com.companyName.appName。*"になります。 =。その後、*をXCodeの特定の通知拡張機能に置き換えることができます。注Appleでは、拡張機能のバンドルIDに名前を付けるために、アプリのバンドルIDの後にピリオド( "。")が1つだけ許可されます。
  2. 拡張機能のバージョンとビルド番号は、アプリのそれと一致する必要があります。
  3. アプリIDが作成されたら、これで配布プロビジョニングプロファイルを作成し、XCodeで使用します。
0
nr5