私はしばらくの間、署名の自動管理オプションを使用していました。しかし、最近の Xcode 8.0 バージョンでこれを実行すると、ビルド設定のリリースと配布でも開発者コード署名 ID を使用するように強制され、それ自体かなり奇妙です。また、関連するバイナリを送信すると、Apple から「プッシュ通知の権利が見つかりません」という恐ろしいメールが届きます。これを補うために、自動オプションを無効にして、プロファイルを手動で指定して戻りました。これにより、配布ビルド設定に配布プロファイルを保持し、Apple からの警告メールを受け取らずに済みました。
自動管理がこのように機能するのはなぜですか? また、その動作を調整するにはどうすればよいでしょうか?
ベストアンサー1
Xcode 8 のリリースに伴い、Apple は署名構成を管理する新しい方法を導入しました。現在、Manual
と の2 つのオプションがありますAutomatic
。
この新機能は、Automatic Signing
以前の Xcode バージョンと同じようには動作しません。以前は、Automatic
プロビジョニング プロファイルを設定すると、Xcode は、使用しようとしていたエンタイトルメントとバンドル ID に一致するコンピューター内の最初のプロビジョニング プロファイルと証明書を使用していました。
Xcode 8 では、Automatic Signing
がプロファイル、エンタイトルメント、証明書を管理しますが、 に対してのみです。自動を選択した場合は、および Xcode によって作成されたプロビジョニング プロファイルDevelopment
を使用するように強制されます。Development signing
上のWWDC 2016 (セッション 401 - Xcode アプリ署名の新機能)彼らは、この新しい署名方法について説明し、いくつかの「ベスト プラクティス」を紹介しています。配布用にビルドしてAutomatic Signing
またはを使用する場合は、 をアーカイブしてから (オーガナイザまたはコマンド ライン ツールから) としてManual
エクスポートする必要があります。用にアーカイブされた場合でも、オーガナイザはアプリを 用に再署名します。Development
xcodebuild -exportArchive
Distribution
Distribution
Development
あなたが説明しているもう 1 つの問題、「プッシュ通知の権利が不足している」は、Xcode 8 で権利の適用方法が変更されたためです。以前のバージョンの Xcode では、権利を明示的に追加する必要はなく、プロビジョニング プロファイルにその権利があれば十分でした。タブで機能が有効になってAPS Environment
いることを確認し、そこにエラーがないことを確認してください。Push Notification
Capabilities
(編集: この新しい動作は意図的なものであり、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 エンタイトルメントを自動的にコピーしません。この動作は意図的です。このエンタイトルメントを使用するには、プロジェクト エディターの Capabilities ペインで Push Notifications を有効にするか、エンタイトルメント ファイルにエンタイトルメントを手動で追加します。(28076333)