プッシュ通知をサポートするようにアプリを構成しようとしていますが、このエラーが発生し続けます:トークンの取得に失敗しました、エラー:Error Domain = NSCocoaErrorDomain Code = 3000 "有効な 'aps-environment'エンタイトルメント文字列がアプリケーションに見つかりませんでした" UserInfo = 0x1f818fc0 { NSLocalizedDescription =アプリケーションの有効な「aps-environment」資格文字列が見つかりません}
他にアイデアはありますか?ありがとう。
私の場合、プロビジョニングプロファイルの内容は次のとおりです。
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の下の "Currently Matches"ヒントテキストは正しいプロビジョニングプロファイルを示していました-奇妙な、ハァッか。奇妙な話を奇妙にするために、実行時に正しいプロビジョニングプロファイルがデバイスにインストールされていました([設定]-> [全般]-> [プロファイル])。アプリが実際に起動であったとき。
手がかりは、これら2つのコマンドの出力の違いです。
Y2X6Z7Z2GR。com.dca .spolsky-ios vsP5GM95Q9VV。com.dca .spolsky
太字部分を一致させると、斜体部分が自動的に一致するように変更されました。さらに、セキュリティとコードサインの出力は一致し、aps-entitlementエラーはなくなりました。
ここでの私の推測は、XCodeがワイルドカード以外のIDでワイルドカードスタイルの一致を使用していたことです。 (結局のところ、「spolsky」はほぼ「spolsky-ios」です)、これは「Currently Matches」の出力を説明しています。しかし、ビルドチェーン内の何かはこれに関してより厳密であるため、ビルド中に実際のワイルドカードIDにフォールバックします。
この問題は、プロビジョニングプロファイルが作成されるため、現在のプロビジョニングプロファイルにAPNS情報が含まれていないためですの前に APNS証明書を作成します。
したがって、問題を解決するには、新しいプロビジョニングプロファイルを作成し、Xcodeでプロビジョニングプロファイルを選択するとエラーがクリアされます。
プッシュ通知がデバイスで既に機能していた後、この同じ問題が発生しました。 Xcodeが何かを誤ってキャッシュしたように見えたので、それを更新すると問題が解決しました:
バンドル識別子は、プロビジョニングプロファイルとcase-sensitiveで一致する必要があることに注意してください。 com.firstlast.appnameであったはずのcom.FirstLast.appnameのようなものがありました。まあ、それは私をかなり長い間忙しかった。
プッシュ通知機能を有効にして、この問題を修正しました。
[プロジェクト]> [ターゲット]> [機能]> [プッシュ通知をオンにする]を選択します
このエラーが発生し、新しいプロビジョニングプロファイルを作成しませんでした。新しいものを作成し、xCodeを再起動する必要がありましたが、今は動作します!
Xcode 8へのアップグレード後にこの問題が突然発生した場合、ケーパビリティ画面に警告が表示され、これを自動的に修正できます。
[プロジェクト]> [ターゲット]> [機能]> [プッシュ通知をオンにする]を選択します
私はこれを、たぶん非頻繁なユースケースで見つけました。 Xcode 6とiOS 8を使用しています。一連のまったく新しいアプリプロジェクトを作成し、同じバンドルIDを再利用しようとしています。これにより、ポータル側のセットアップをすべて繰り返す必要がなくなりました。これも単にサンドボックステスト用でした。
最初のアプリではセットアップと登録が正常に機能する一方で、デバイスからそのアプリを削除し、2番目のアプリに同じバンドルIDを設定し、そのアプリにPNを登録しようとすると、このエラー。
私の解決策は:
.mobileprovision
ファイルをダブルクリックして、Xcodeにインストールし直しますこのアプローチは、以前の状態が何であれ、それを失ってしまうようであり、新しいアプリ/同じバンドルIDでPNに登録することができます。
製品->クリーンでした。うまくいけば、それは他の誰かのためにそれを行います。
IOS 10でこのエラーが発生した場合は、次の手順を試してください。
1.プロジェクトをきれいにします。
2。および[ターゲット]-> [機能]-> [プッシュ通知]を確認します。オフの場合はオンにします。
問題は解決します。上記の手順は、この問題を取り除くのに役立ちます。それが誰かに役立つことを願っています。
新しいプロビジョニングプロファイルが機能しました。開発中の場合は、必ず開発者プロファイルを使用してください(アドホックを使用しないでください)。その後は元気で、なぜ古いものが正常に機能しなくなったのか分かりません。