web-dev-qa-db-ja.com

Xcode 8.0の署名動作の自動管理

私はしばらくの間、自動署名オプションを使用していました。しかし、最近のXcode 8.0バージョンでこれを行うと、ビルド設定でのリリースと配布にも開発者のコ​​ード署名IDを使用せざるを得なくなります。相対バイナリを送信すると、Appleから恐ろしいMissing Push Notification Entitlementメールが届きます。それを補うために、自動オプションを無効にし、プロファイルを指定して手動で戻りました。これにより、配布プロファイルを配布ビルド設定に保持し、Appleからの警告メールを保存できました。

自動管理がこのように機能する理由と、その動作を調整するために何をすべきか?

19

Xcode 8のリリースで、Appleは署名構成を管理する新しい方法を導入しました。現在、2つのオプションManualおよびAutomaticがあります。

この新しいAutomatic Signingは、以前のXcodeバージョンとは異なります。以前、Automaticプロビジョニングプロファイルを設定すると、Xcodeは、使用しようとしている資格とバンドル識別子に一致するコンピューター内の最初のプロビジョニングプロファイルと証明書を使用していました。

Xcode 8では、Automatic Signingがプロファイル、資格、および証明書を管理しますが、Developmentのみです。自動を選択した場合、Development signingおよびXcodeで作成されたプロビジョニングプロファイルを使用する必要があります。

WWDC 2016(セッション401-Xcodeアプリの署名の新機能) では、この新しい署名方法について説明し、「ベストプラクティス」について説明しています。配布用に構築し、Automatic SigningまたはManualを使用する場合は、Developmentをアーカイブし、Distributionとして(オーガナイザーまたはコマンドラインツールxcodebuild -exportArchiveから)エクスポートする必要があります。オーガナイザーは、Distributionでアーカイブされた場合でも、Developmentのアプリに再署名します。

「Push Notification Entitlementがありません」という他の問題は、Xcode 8がエンタイトルメントを適用する方法を変更したためです。 Xcodeの以前のバージョンでは、APS Environment資格を明示的に追加する必要はありませんでした。プロビジョニングプロファイルにその資格があれば十分でした。 CapabilitiesタブでPush Notification機能が有効になっていることを確認し、エラーがないことを確認します。

(編集:この新しい動作は意図的であり、Xcode 8リリースノートに記載されています: https://developer.Apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Introduction.html#//Apple_ref/doc/uid/TP40001051-CH1-DontLinkElementID_44

Xcode 8は、ビルド時にプロビジョニングプロファイルからaps-environmentエンタイトルメントを自動的にコピーしません。この動作は意図的なものです。この資格を使用するには、プロジェクトエディターの[機能]ペインでプッシュ通知を有効にするか、資格ファイルに資格を手動で追加します。 (28076333)

51
pablobart