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