Xcode 8の送信時に「アプリの署名にaps-environmentエンタイトルメントがありません」


118

過去6か月間に数十のバージョンを提出したアプリがあり、APNSを使用しています。Xcode 8にアップグレードした後、Appleから次のメールを受け取りました

親愛なる開発者、

APP_NAMEの最近の配信に1つ以上の問題が見つかりました。配信は成功しましたが、次の配信で次の問題を修正することをお勧めします。

プッシュ通知のエンタイトルメントがない-アプリにAppleのプッシュ通知サービスのAPIが含まれていますが、aps-environmentエンタイトルメントがアプリの署名にありません。これを解決するには、プロビジョニングポータルでプッシュ通知に対してアプリIDが有効になっていることを確認してください。次に、aps-environmentエンタイトルメントを含む配布プロビジョニングプロファイルでアプリに署名します。これにより正しい署名が作成され、アプリを再送信できます。詳細については、ローカルおよびプッシュ通知プログラミングガイドの「プロビジョニングと開発」を参照してください。アプリがApple Push Notificationサービスを使用しない場合、アクションは不要です。今後の送信からAPIを削除して、この警告を停止することができます。サードパーティのフレームワークを使用している場合、

問題を修正したら、XcodeまたはApplication Loaderを使用して、新しいバイナリをiTunes Connectにアップロードできます。

よろしく、

App Storeチーム

奇妙なのは、developer.apple.com- > Certificates、Identifiers&Profilesに行っても、AppIdでプッシュ通知がまだ有効になっていることです。私は今までにやったことと何も違うことをしていませんので、Xcode 8のアップデートが何かを壊したかどうか知りたいです。何か案は?

ところで:彼らがプッシュ通知プログラミングガイドに付けたリンクが電子メールで壊れていたので、それは良い兆候ではありません。

回答:


156

実際にはとても簡単です。何らかの理由で、Xcode 8では無効になりましたが、[ターゲット]-> [機能]に移動し、そのビューでプッシュ通知がすべて正しいことを確認します。私にとっては、それは私がクリックしなければならなかった "Fix Me"を持っていた、そして出来上がり。


4
この問題の奇妙なことは解決策ではありませんでした。Xcode7ではこれが有効になっていて、アップグレード後に無効になっていたという事実でした。
Unome

2
また、作成時にデフォルトで「開発」に設定されていたため、資格ファイルに移動して、APS環境の値を「本番」に変更する必要がありました。
2016

61
最近Appleで雇われた頭のない人がいるに違いありません。なぜデフォルトで物事を無効にし、何も警告せずに暗黙的に不適切な値を設定することによって、なぜ開発者の時間を失うのですか プロファイル、証明書、デバッグ、その他の迷惑なものを作成するのに1日
失敗し

3
最後に!それはとんでもないことです。証明書とプロファイルの削除と再作成を約5時間行っています。良いことは、これらの証明書/プロファイル/識別子が今何であるかを完全に理解していると言えることです:)このヒントをありがとうございます。
カミルリコウスキー

4
@bekは、おそらく開発のままにしておく必要があることに注意してください。iTunes Connectにアップロードすると、自動的に製品版に変更されます。
Montdidier 2016年

84

私も同じ問題を抱えており、Xcode8ではデフォルトでプッシュ通知がオフになっているはずです。気づかなかった。気をつけて。

能力


アカウントにプッシュ通知セクションがない理由を教えてください。
Anuj 2018

28

Xcode 8で変更があり、資格はアプリIDからではなく、アプリターゲットで選択された機能から取得されます。したがって、Unome(OP)が言ったように、プッシュ通知がオンになっていることを確認する必要があります。

私にとっては「Fix Me」ボタンではありませんでしたが、2つの資格ファイル(1つは開発用、もう1つは配布用)がありました。プッシュ通知機能を切り替えると、aps-environmentキーと値developmentが開発エンタイトルメントファイルに追加されますが、配布エンタイトルメントファイルには追加されません。同じキーをディストリビューションにコピーすると、iTunes Connectにアップロードするときに警告メールが表示されなくなりました。

ほとんどのプロジェクトでは、プッシュ通知をオンにするだけで十分です。すでにオンになっているが、キーがエンタイトルメントにない場合は、オフとオンを切り替えてみてください。


これは私が乗っているボートですが、.entitlements現在のconfig / schemeのファイルで何を指定しても、常にproductionとして使用されますaps-environment
Albert Bori 2016

機能のプッシュ通知を切り替えると、Xcode 8がクラッシュします!!
djay

2
@AlbertBori奇妙なことに、私はそれを開発を示すためにのみ得ることができましたproduction
timgcarlson 2016

6
@meteors値がであれば問題ありませんdevelopment。プロジェクトがアーカイブされると、IPAで変更されます。
timgcarlson 2016年

2
@timgcarlsonこれは実際にはアーカイブ中には発生しません。提出時またはエクスポート時に発生します。また、ここで正しく設定されていることを確認するのに役立つ情報もいくつかあります:developer.apple.com/library/content/qa/qa1798/_index.html
Mark Leonard

27

Xcode リリースノートから

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

これは素晴らしい変更です。aps-environmentエンタイトルメントがplistを必要としないことは常に奇妙でしたが、他の多くは必要でした。

「Fix Me」を単に盲目的に押すことを望まず、現在エンタイトルメントファイルがない場合は、プロジェクトのビルド設定の「コード署名エンタイトルメント」で参照されるのは単なるplistファイルです。


1
リンクされたメモにその引用が見つかりませんでした!
Iulian Onofrei 2016年

誰が私のコメントに賛成したのか、何が間違っていたのかはわかりませんが、今でも見つけることができます。
Iulian Onofrei 2017

13

Xcode 8との戦いの1日の後、aps-environment開発がデバッグビルドに追加されなかった理由を理解できませんでした。デバッグテスト用にビルドされたアプリの資格セクションから欠落していました...新しい機能を有効にしていましたが、資格ファイルが存在していました。問題は、デバッグ資格のXcodeビルド設定で、任意のSDKの資格ファイルを設定する必要があることです。

スクリーンショット


特定のSDKの値をオーバーライドするためにDebugキーが使用されるため、キーの値の設定とDebug> Any SDK1の設定に違いはないと思います。
Iulian Onofrei 2016年

これが私の解決策です
Himanth

午前中ずっとこれに苦労した後、これも私が抱えていた問題でした。機能を切り替え、プロビジョニングプロファイルを生成しても、どれも機能しませんでした。これはしました。
Dave S

これはXcode 8.3.3の一部のケースでは依然として有効な解決策です
dan

私はこれを100万回賛成票に入れたいと思います。私は1週間も苦労してきましたが、これが解決策でした。上部のコード署名エンタイトルメントにファイルパスを入力するだけでは不十分で、「Any SDK」の部分でも行う必要がありました。これは私にとってそれを解決するための鍵でした。
ロバートベントレー

7

XCode 7.3.1を使用してAppleから同じメールを受け取りました。問題を解決するために私がしたことは:

  1. @Bruce Tsaiの回答に記載されているように、[機能]> [PUSH通知をオン]に設定します。
  2. [ビルド設定]> [コード署名]> [コード署名ID]で、画像に示すように、デバッグ用の開発者証明書とリリース用の配布証明書を設定します。

ここに画像の説明を入力してください ここに画像の説明を入力してください


こんにちは、機能で私は機能を取得していません> PUSH通知の設定
Anuj

@Anuj、私はそれがあなたのXcodeの中にあるはずのスクリーンショットを追加しました。
ルーベン

5

Firebaseフレームワークを使用していて、プッシュ通知を使用していない場合は、2つの解決策があります。1。バイナリをアップロードするたびにチーム全体に送信される「問題」メッセージを我慢してください。通知を実際に使用していない限り、アプリは送信として受け入れられますが、警告は無視できます。または2.これを行います:https : //stackoverflow.com/a/46802075/7529450。これにより、迷惑メール通知が削除され、送信として承認されます。


4

署名の自動管理はオフになりました

署名の自動管理がオフになっていたので、確認して問題なく動作しました。


3

Xcode 9プッシュ通知の使用が有効になりました。

プッシュ通知機能を無効化/再有効化してみました。(動作しませんでした)

[ 署名自動的に管理する]を無効または再度有効にしてみました。(動作しませんでした)

プロビジョニングプロファイルを削除して再度追加する必要がありました。(方法はこちらをご覧ください病棟後の署名の自動管理を無効/再度有効にする必要がある場合があります。


2

私にとっての問題は、2つの資格ファイルが存在するためでした:Entitlements-Debug.plistEntitlements-Release.plist。そして、そのうちの1つ(デバッグ)のみで設定が必要です。

ビルド設定>署名>コード署名エンタイトルメントの複数の値を単一に変更してから、機能MyAppName/MyAppName.entitlementsを再度有効にする>プッシュ通知スイッチャーでうまくました。

それが役に立てば幸い。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.