web-dev-qa-db-ja.com

プッシュ通知資格がありません

拒否されたときに送信するアプリがあり、メッセージが表示された

プッシュ通知資格の欠落-アプリはAppleプッシュ通知サービスに登録されているように見えますが、アプリの署名の資格には「aps-environment」資格が含まれていません。アプリがAppleプッシュ通知サービスを使用している場合、プロビジョニングポータルでアプリIDがプッシュ通知に対して有効になっていることを確認し、「aps-environment」を含むDistributionプロビジョニングプロファイルでアプリに署名した後に再送信します資格。

アドホックプロビジョニングを確認したところ、aps-environmentとproductionが見つかりましたが、ディストリビューションプロビジョニングを開いたときに、そのようなものが見つかりません。

これがこのエラーメッセージとApple拒否の原因ですか?どうすれば修正できますか?

110
paul polo

はい、それがApp Store拒否の原因です。アドホックプロビジョニングプロファイルにaps-environmentキーがある場合は、Apple Provisioning Portalでアプリが正しく構成されていることを意味します。必要なことは、ローカルマシンのApp Store配布プロファイルを削除してから、プロビジョニングポータルから配布プロファイルを再ダウンロードしてインストールすることだけです。この新しいものにはaps-environmentキーが含まれている必要があります。

73
tom

最初のアプリID

本番側でIDプッシュ通知が有効になっていることを確認してください

写真に現れるように

enter image description here

第二の証明書

本番セクションから、IDを使用して2つの証明書を作成します(プッシュ通知が有効)

App StoreおよびAd Hoc証明書

Appleプッシュ通知サービスSSL(サンドボックス)証明書

enter image description here

サードプロビジョニングプロファイル

DistributionセクションからApp StoreあなたのIDでプロファイルを作成します

最後に

binをアップロードしている間、どのプロビジョニングプロファイルが使用され、多くの資格があるかを確認する必要があります

enter image description here

これはすべてのケースでこの問題を引き起こします。

41
Mina Fawzy

XCode 8では、プロビジョニングと証明書のすべてを有効にすることに加えて、ターゲットの[機能]タブでプッシュを有効にする必要があります。 Xcode 8 "送信時に

これについての私のブログ投稿 here

39
Vaiden

別の理由でこのメッセージを受け取りました。最初にアプリ専用のApp Store配布プロファイルを作成せずにXcode経由でアプリを送信しました。 Xcodeは、インストールされている場合、ワイルドカードApp Storeプロファイルを自動的に使用すると考えています。ただし、アプリでプッシュ通知を使用するには、独自のプロファイルが必要です。

修正方法は、アプリの新しいApp Store Distributionプロファイルを作成することです。次に、それをダウンロードし、Xcodeにドラッグして、プロジェクトの[ビルド設定]> [コード署名]> [リリース]を変更して、新しいプロファイルを使用します。

22
Simon Woodside

@Vaidenの回答に続いて、Xcode 8では、ターゲットを選択して[問題の修正]をクリックすることでこの問題を解決できます。もちろん、 Apple Developer portal でプッシュ通知を設定する必要があります(手間を省く新しい「自動署名管理」オプションを使用すると、プロセスを少し簡素化できますプロビジョニングプロファイルをダウンロードします)。

Fix me option

9
Ian

実際にアプリでプッシュ通知を使用しているこの問題に直面している人向け:

Push証明書は最近期限切れになりそうだったので、Appleで概説されている標準的な方法で新しいdev/prod Push証明書を作成しました(ここでは詳しく説明しません。プッシュ証明書をもう1年間使用するために更新するときに、ウェブ全体で使用できます)。

しかし、そうすると、この質問の問題が浮かび上がりました。何をしても、アプリを送信した後、Appleからこのメールを受け取りました。 Appleメンバーセンターでディストリビューションプロビジョニングプロファイルの設定を確認したところ、すべて正常に見えました(prod/devの両方でアプリIDのプッシュが有効になっており、ディストリビューションプロビジョニングプロファイルはこのアプリに接続されたままです) ID、私たちは文字通り、標準的な慣行であるように、もう1年間新しいPush証明書を作成しました。

最後に、これは私にとってそれを解決することになったものです:

  1. App IDを指す新しい配布プロビジョニングプロファイルを作成します(現在のプロファイルをそのまま残します)
  2. Xcodeで、[設定]> [アカウント]>アカウントを選択> [詳細]> [更新]アイコンをクリックして、プロビジョニングプロファイルを更新します。
  3. アプリの資格plistファイルを手動で作成します:
    • [ファイル]メニュー> [新規ファイル...].
    • IOS>リソース>プロパティリストを選択します
    • 新しいファイルに「foo.entitlements」という名前を付けます(通常、「foo」はターゲット名です)
    • 「資格ファイル」の横にある(+)をクリックして、最上位のアイテムを追加します(プロパティリストエディターは、ファイル拡張子により正しいスキーマを使用します)
  4. このエンタイトルメントファイルがターゲットのビルド設定で使用されていることを確認します(ターゲット>ビルド設定>「エンタイトルメント」の検索、CODE_SIGN_ENTITLEMENTSで、作成したエンタイトルメントファイルへのパスを設定します)
  5. ターゲットのプロビジョニングプロファイル/コード署名IDが適切なディストリビューションプロビジョニングプロファイル/署名IDに正しく設定されていることを確認してください(これは明らかです)
  6. これが影響を与えるかどうかは100%わかりません(ターゲット設定がプロジェクト設定を上書きすることはないはずですが、とにかくこれを行いました)、プロジェクトのプロビジョニングプロファイル/署名IDがターゲットの
  7. 作成した資格ファイルで、空のファイルを右クリックし、「生のキー/値を表示」を選択します
  8. 「aps-environment」という資格ファイルに新しいエントリを追加し、その値を「production」に設定します
  9. 1つの重要な注意点として、以前にkeychain-access-groups資格を使用していた場合、手動でこれを行うと何らかの理由でクリアされたため、ここにもそのキーを追加します。値が以前のビルドで使用された値と同じであることを確認します(オーガナイザーで以前のビルドを見つけ、アプリストアに送信して、チームを選択し、アプリを送信する前に、 「(X)Entitlements」文字列。資格を展開し、keychain-access-group資格の値を確認します。
  10. アプリをアーカイブし、最後の「送信」ボタンに到達するまで送信を試みます。このアプリは、メンバーセンターで作成した新しいプロビジョニングプロファイルを使用して作成されたことがわかります。今すぐキャンセルしてください。
  11. Appleメンバーセンターに戻り、手順1で作成した新しいプロビジョニングプロファイルを削除します。
  12. Xcodeに戻り、手順2を繰り返してプロビジョニングプロファイルリストをもう一度更新します。
  13. アプリを再度アーカイブすると、使用したい古いディストリビューションプロビジョニングプロファイルでアプリが構築され、aps-environmentエンタイトルメントが正しく設定されていることがわかります。送信すれば完了です。

私はこれがスクリーンショットがあるべきほど詳細ではないことを知っています。可能な場合はスクリーンショットで更新しようとしますが、当分の間、私は今時間のクランチになっていて、私がそこにしたこと。また、ここで説明した手順の一部または大部分は不要である可能性が非常に高いです。それらを実行したので、ここに配置しています。

8
Adam Eisfeld

iOSプロビジョニングポータルのdeveloper.Apple.comで、アプリIDがプッシュ対応かどうかを確認し、有効になっていない場合は、アプリIDのプッシュSSL証明書を構成してダウンロードし、キーチェーンにもう一度再インストールしてから、Distrubution ProfileをダウンロードしますXcode Liabraryで

5
Vishal's p

私もこの問題に直面していました私はプッシュ通知をまったく使用していませんでした私のアプリで新しいプロビジョニングプロファイルがうまくいかなかった

1。Ad hoc&App Storeのみの新しい証明書を作成します。

2。この証明書を使用して配布プロファイルを作成し、プロファイルをXcodeと統合します。

その後、警告なしで承認されたこのプロファイルで新しく送信されたビルド。

4
Desert Rose

私の場合、myapp.profileを作成して手動でxcodeに設定し、「Finderで表示」を選択してembedded.mobileprovisionを見つけ、aps-environmentがファイルにあることを確認すると、エラーが発生しました。まだそこに。

その後、デベロッパーセンターにアクセスして、XC:myapp.profileのステータスが無効であることがわかりました。私はそれを更新し、XC:myapp.profileをインストールしましたが、うまくいきました。

Xcodeはプロファイルを管理しようとしているため、バイナリをストアに送信するときにプロビジョニングプロファイルを確認し、それが正しいことを確認する必要があると思います。他の回答によると、それはさまざまな理由で引き起こされる可能性があるため、本当に迷惑です。

更新:

ダウンロードしたプロファイルで署名し、aps-environmentに送信しようとしたときにApp Storeが存在することを確認したら、プロファイルとコード署名エンティティを自動およびiOS Developerに変更できるはずです。 Xcode 7で改善できることを願っています。

2
superarts.org

エキスポ「イジェクトされた」アプリでこれを解決するために、機能タブに移動し、プッシュを有効にしてから再度無効にしました。これにより、APNSの「資格」設定が.entitlementsファイルから削除されました。

1
Chris

これが私にとってそれを修正したものでした。 (機能のオン/オフの切り替え、プロビジョニングプロファイルの再作成などをすでに試みていました)。

Build SettingsタブのCode Signing Entitlements、my.entitlementsファイルはすべてのセクションにリンクしていませんでした。 Any SDKセクションに追加すると、エラーは解決しました。

enter image description here

1
mogile_oli

私は同じ問題を抱えていました。私の解決策は、Target-> Capabilitiesからプッシュ通知の資格を追加することでした。

0
Shalom Dahan

これは、アプリの配布プロファイルの有効期限が切れたために突然起こりました。 Xcodeは、代わりにワイルドカードプロファイルの使用を開始しました。このプロファイルでは、プッシュ通知の資格が有効になっていませんでした。警告は表示されませんでした。修正は簡単でした。 Apple Developer Member Centerでアプリの別の配布プロファイルを生成し、ダウンロードし、ダブルクリックしてXcodeにインストールする必要がありました。

0
ahmacleod

ここにいくつかの本当に良い提案があります。

Minaが提供した最後のスクリーンショットを参照すると、最初にアプリをアーカイブした後、アップロード時に言及したプロビジョニングプロファイルにワイルドカード(XC。*)が含まれていました。これは間違っています。

これを解決するには、かなりの努力が必要でした。 Simon WoodsideとMina Fawzyが提供した提案を組み合わせて実行する必要がありました。

プロジェクトに関連する既存の証明書とプロビジョニングプロファイルがある場合は、それらすべてをローカルで削除し、それらをすべてリモートで取り消すのがよいでしょう。新たなスタートを切りましょう。

Mina Fawzyの詳細な提案は素晴らしいものです。 Minaの提案を正しく実行すると、オンラインであなたの面倒を見るはずです。

サイモンの提案を入力してください。プロジェクト内で確認する必要がある2つのこと。 XCodeを使用して、ここに移動します。

プロジェクト->ビルド設定->コード署名

コード署名IDおよびプロビジョニングプロファイルプロパティを確認します。これらの2つのプロパティをプロジェクト名のプロパティに設定してください。 XCodeが自動的に選択することを許可しないでください。また、一般的なコード署名ID(Iphone Developerなど)を使用しないでください。

アーカイブを決定する前に、実際にデバイスにアプリをインストールできることを確認してください。

0
Coach Roebuck

CapabilitiesからPush Notificationを有効にしてすべての証明書を作り直した後の最大の問題は、ターゲット名フォルダー名が保存された場所がプロジェクトが2つの文字列で構成されていたことですスペースで区切られます。スペースを削除した後、すべてがうまくいきました!

0