アプリケーションに有効な「aps-environment」エンタイトルメント文字列が見つかりません


83

プッシュ通知をサポートするようにアプリを構成しようとしていますが、次のエラーが発生し続けます:トークンの取得に失敗しました、エラー:エラードメイン= NSCocoaErrorDomainコード= 3000 "アプリケーションに有効な 'aps-environment'資格文字列が見つかりません" UserInfo = 0x1f818fc0 { NSLocalizedDescription =アプリケーションに有効な 'aps-environment'資格文字列が見つかりません}

  • アプリがプッシュ通知をサポートできるようにしました(現時点での開発のみ)。
  • プッシュ通知を有効にした後、プロビジョニングプロファイルを作成しました。
  • 私のバンドル識別子は、プロファイルに表示されているものと同じです。
  • 私のプロファイルファイルには文字列があります:aps-environment
  • 「コード署名ID」セクションのプロジェクトとターゲットの両方で、すべての値がプロビジョニングプロファイルとして選択されていることを確認しました。

これ以上のアイデアはありますか?ありがとう。


これについての洞察はありませんか?それは多くの人が遭遇すると何か...のように見える
バシャン

回答:


64

私の場合、プロビジョニングプロファイルの内容は次のとおりです。

security cms -D -i ~/Downloads/spolskyDevelop.mobileprovision 
...
<key>application-identifier</key>
<string>P5GM95Q9VV.com.dca.spolsky</string>
<key>aps-environment</key>
<string>development</string>

実際にビルドされたアプリのものとは異なりました(Xcodeの[ログ]タブを見ると、どこにビルドされているかがわかります)

codesign -d --entitlements - '/Users/drew/Library/Developer/Xcode/DerivedData/spolsky-bdbtdfjeeywhqzccpmmceqvnhgtm/Build/Products/Debug-iphoneos/spolsky-ios.app'
<dict>
    <key>application-identifier</key>
    <string>Y2X6Z7Z2GR.com.dca.spolsky-ios</string>
    <key>get-task-allow</key>
    <true/>
    <key>keychain-access-groups</key>
    <array>
        <string>Y2X6Z7Z2GR.com.dca.spolsky-ios</string>
    </array>
</dict>

これは、Code Signing Identityの下の「CurrentlyMatches」ヒントテキストが正しいプロビジョニングプロファイルを示していとしても当てはまりました。奇妙ですね。奇妙な話をさらに奇妙にするために、実行時に正しいプロビジョニングプロファイルがデバイスにインストールされていたため([設定]-> [一般]-> [プロファイル])、プロビジョニングプロファイルが正しいと思われましたが、ワイルドカードIDにフォールバックしていましたアプリが実際に起動されたとき

手がかりは、これら2つのコマンドの出力の違いでした。

Y2X6Z7Z2GR.com.dcaspolsky -ios vs P5GM95Q9VV.com.dca。スポルスキー

太字の部分を一致させると、斜体の部分が自動的に一致するように変更されました。さらに、セキュリティとコードサインの出力は一致しており、aps-entitlementエラーは発生していません。

ここでの私の推測では、XCodeはワイルドカード以外のIDでワイルドカードスタイルの一致を使用していました。(「spolsky」は、結局のところ、「spolsky-ios」に非常に近いです)、これは「CurrentlyMatches」の出力を説明しています。ただし、ビルドチェーン内の何かがこれについてより厳密であるため、ビルド中に実際のワイルドカードIDにフォールバックします。


7
同様の問題が発生しました。プロジェクトの「ビルド設定」がターゲットの「ビルド設定」と異なっていました...私の場合、ターゲット設定はデフォルトで間違ったプロビジョニングプロファイルに設定されていました。
ロブ

1
これを発見するための小道具、私は同じ問題に遭遇しました。
コードモンク2013年

1
私の同僚の1人がこのプロビジョニングの問題を抱えていました。ただし、Xcodeのプロファイル設定に移動し、証明書/プロビジョニングキーのリストを更新した後でのみ、ワイルドカード以外のプロビジョニングキーを選択できました。
cbh2000 2013年

1
'debug'のターゲット設定は、iOS Developer / Automaticを使用していたため、.appに間違ったコード署名IDが表示されていました。新しいコード署名IDを使用するには、デバッグとリリースの両方でプロジェクトとターゲットの設定を明示的に設定する必要がありましたが、問題は修正されました。プロビジョニングプロファイルだけでなく、これらのコード署名IDも確認する必要があります。これらの素晴らしいターミナルコマンドなしでは解決できなかったでしょう!
self.name 2014年

6
念のために:仕事へのプッシュ通知のために、一つは使用する必要があり、特定のアプリケーションのバンドルIDと、プロファイルをプロビジョニングし、そしてない1と*ワイルドカード。
mgarciaisaia 2014

37

この問題は、APNS証明書を作成する前にプロビジョニングプロファイルが作成されるため、現在のプロビジョニングプロファイルにAPNS情報が含まれていないことが原因です。

したがって、問題を解決するには、新しいプロビジョニングプロファイルを作成し、Xcodeでプロビジョニングプロファイルを選択するとエラーがクリアされます。


それは私にとってはうまくいきませんでした。その他のポインタ。これを見てください:stackoverflow.com/questions/25679750/...
Ajeet

29

プッシュ通知がすでにデバイスで機能していた後、これと同じ問題が発生しました。Xcodeが何かを誤ってキャッシュしたように見えたので、それを更新すると問題が修正されました。

  1. Xcode->設定->アカウント
  2. 開発者アカウントの詳細を表示する
  3. プロビジョニングプロファイルの[更新]を数回クリックするだけです。更新するたびにこれらの変化が見られました。変化が止まるまでリフレッシュしてください。

奇妙なことに、これは私にとってはうまくいきました!更新が停止するまで更新し、ビルドフォルダーをクリーンアップして、XCodeを再起動しました。これは、プロビジョニングプロファイルとビルドされたアプリでバンドルIDを確認した後です(両方で一致した場合、さらに困惑します)。
ショーンマイケルドリアン2015

更新ボタン(?)はもうありません
Gerry

9

このエラーが発生し、新しいプロビジョニングプロファイルを作成しませんでした。新しいものを作成してからxCodeを再起動する必要がありましたが、現在は機能しています。


9

バンドル識別子は、大文字と小文字を区別してプロビジョニングプロファイルと一致する必要があることに注意してください。com.firstlast.appnameであるはずだったのに、com.FirstLast.appnameのようなものがありました。まあ、それは私をかなり長い間忙しくさせました。


私は同じ問題を抱えていました、これは私のためにそれを修正しました。
kuba 2014年

9

プッシュ通知機能を有効にすることでこの問題を修正しました。

[プロジェクト]> [ターゲット]> [機能]> [プッシュ通知をオンにする]を選択します

画像をチェックしてください


3

Xcode 8にアップグレードした後にこの問題が突然発生した場合は、機能画面に警告が表示され、これを自動的に修正できる場合があります。

[プロジェクト]> [ターゲット]> [機能]> [プッシュ通知をオンにする]を選択します


それが私を頭痛から救ったものです。ありがとう!
jpaljasma 2016年

2

製品->クリーンは私のためにそれをしました。うまくいけば、それは他の誰かのためにそれをします。


私は両方の掃除をします。command-option-shift-kによる2次クリーンアップも役立ちます。
描いた..

2

私は、おそらく頻繁ではないユースケースでこれに遭遇しました。私はXcode6とiOS8を使用しています。一連のまったく新しいアプリプロジェクトを作成し、同じバンドルIDを再利用して、ポータル側のすべてのセットアップを再度実行する必要がないようにしました。これもサンドボックステスト用でした。

最初のアプリではセットアップと登録は正常に機能しますが、そのアプリをデバイスから削除し、2番目のアプリに同じバンドルIDを設定してから、そのアプリにPNを登録しようとすると、次のようになります。このエラー。

私の解決策は次のとおりです。

  1. 関連するプロビジョニングプロファイルをデバイスから削除します。
  2. Xcodeから関連するプロビジョニングプロファイルを削除します。
  3. Xcodeを閉じる
  4. ダウンロードした.mobileprovisionファイルをダブルクリックして、Xcodeにインストールし直します
  5. プロジェクトを開いてデプロイします。

このアプローチは、以前の状態が何であれ、ゆるんでいるように見えます。新しいアプリ/同じバンドルIDでPNに登録できます。


2

iOS 10でこのエラーが発生した場合は、次の手順を試すことができます。

1.プロジェクトをクリーンアップします。
2. [ターゲット]-> [機能]-> [プッシュ通知]を確認します。オフの場合はオンにします。

そして、問題は解決します。上記の手順は、この問題を取り除くのに役立ちます。それが誰かに役立つことを願っています。


0

新しいプロビジョニングプロファイルが機能しました。開発中の場合は、必ず開発者プロファイルを使用してください(アドホックは使用しないでください)。その後は大丈夫でした。なぜ古いものが正しく機能しなくなったのかわかりません。

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