web-dev-qa-db-ja.com

送信時のXcode 8「aps-environmentエンタイトルメントがアプリの署名から欠落しています」

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

開発者各位

最近のAPP_NAMEの配信に問題が1つ以上見つかりました。あなたの配達は成功しました、しかしあなたはあなたの次の配達で以下の問題を修正したいかもしれません:

プッシュ通知エンタイトルメントの欠如 - あなたのアプリにはAppleのプッシュ通知サービスのためのAPIが含まれていますが、aps-環境エンタイトルメントがアプリの署名から欠落しています。これを解決するには、プロビジョニングポータルでApp IDがプッシュ通知に対して有効になっていることを確認してください。次に、aps-environmentエンタイトルメントを含むディストリビューションプロビジョニングプロファイルでアプリに署名します。これにより正しい署名が作成され、アプリを再送信できます。詳細については、 『Local and Push Notification Programming Guide』の「Provisioning and Development」を参照してください。アプリがApple Push Notificationサービスを使用していない場合は、何もする必要はありません。この警告を防ぐために、今後の送信からAPIを削除することができます。サードパーティのフレームワークを使用している場合は、APIを削除する方法について開発者に問い合わせる必要があります。

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

よろしく、

App Storeチーム

奇妙なことは私が行ったことですdeveloper.Apple.com - >証明書、識別子とプロファイルそして私のAppIdはまだプッシュ通知が有効になっていません。 Xcode 8アップデートで何か問題が発生した場合は、興味があります。何か案は?

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

113
Unome

実はとても簡単です。何らかの理由でXcode 8では無効になっていましたが、Targets - > Capabilitiesに移動してPush Notificationsがすべて正しいことを確認してください。私にとってそれは、私がクリックしなければならなかった「Fix Me」を持っていた、そして失礼した。

145
Unome

私も同じ問題を抱えており、Xcode 8ではプッシュ通知がデフォルトでオフになっていると思います。気付かなかった。それに注意してください。

capability

79
Bruce Tsai

Xcode リリースノート から:

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

Aps-environmentエンタイトルメントがplistを必要としなかったこと、しかし他の多くがそうしていたことは常に非常に奇妙だったので、これは大きな変化です。

盲目的に「Fix Me」を押したくないし、現在エンタイトルメントファイルを持っていないのであれば、それはプロジェクトの「ビルド設定」の「コード署名エンタイトルメント」で参照されているplistファイルです。

27
mattyohe

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

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

ほとんどのプロジェクトでは、プッシュ通知をオンにするだけで十分です。すでにオンになっていてもキーがエンタイトルメントにない場合は、オフにしてからもう一度オンにします。

27
timgcarlson

Xcode 8との闘いの後、aps-environment開発がデバッグビルドに追加されなかった理由がわかりませんでした。デバッグ機能のためにビルドされたアプリのエンタイトルメントのセクションから欠落していました…新しい機能を有効にしてエンタイトルメントファイルが存在していたとしても。問題は、デバッグエンタイトルメントのXcodeビルド設定でエンタイトルメントファイルを任意のSDKに設定する必要があることです。

screenshot

12
James L Harris

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

  1. @Bruce Tsaiの回答に記載されているように、Capabilities> Set push notificationをONに設定します。
  2. 次の図に示すように、[ビルド設定]> [コード署名]> [コード署名ID]で、デバッグ用の開発者証明書とリリース用の配布証明書を設定します。

enter image description hereenter image description here

6
Ruben

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

5
Aaron Halvorsen

Automatically manage signing was off for me

自動的に署名を管理するのは私にとってはオフでした、私はチェックして、私のためにうまく働きました。

4
Shemeer M Ali

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

Push Notification機能を無効化/再有効化してみました。 (うまくいきませんでした)

署名を自動的に管理するを無効にする/再度有効にすることを試みました。 (うまくいきませんでした)

プロビジョニングプロファイルを削除して再度追加する必要があることがわかりました。 ( やり方はこちらを見てくださいワード後に自動的に署名を管理するを無効にする/再度有効にする必要があるかもしれません。

3
Aldracor

私にとって問題は、2つのエンタイトルメントファイルEntitlements-Debug.plistEntitlements-Release.plistがあるためです。そのうちの1つ(デバッグ)だけに設定が必要です。

ビルド設定>署名>コード署名エンタイトルメントの複数の値を単一のMyAppName/MyAppName.entitlementsに変更してから、ケーパビリティ>プッシュ通知を再度有効にするスイッチャーが私のためにトリックをしました。

それが役に立てば幸い。

2

もう1つの選択肢は、AppName/Entitlements-Debug.plistのソースをAppName/Entitlements-Release.plistにコピーペーストすることです。

0