xcodeはアプリケーションの識別子をどこから取得しますか? 、 {PRODUCT_NAME}からのXCodeバンドル識別子のフォーマット を読み、さらに読み込みますが...
私はプッシュ通知を取得し、恐ろしいものを得ようとしています
「エラードメイン= NSCocoaErrorDomainコード= 3000「アプリケーションの有効な「aps-environment」資格文字列が見つかりません」UserInfo = 0x15b200 {NSLocalizedDescription =アプリケーションの有効な「aps-environment」資格文字列が見つかりません}」エラー。
以下を含むすべての手順を正しく実行したことを確信しています。
頭を悩ますことができないと思うのは、バンドル識別子だけです
プッシュ証明書は
XXXXXXXXXX.com.julianbaker.pwcnewsuk
PwCNewUK-Info.plistのバンドル識別子は、
com.julianbaker.${PRODUCT_NAME:rfc1034identifier}
手動で変更した場合
com.julianbaker.pwcnewsuk
アプリがPwCNewsUKとして認識されるため、UDID不一致エラーが表示されます
私がこれをグーグルで検索したとき、問題に関していくらかの混乱があるようですが、それらは一致しなければならないようです?
質問:
Bundle Indentiferは、Push証明書と一致させるために何をすべきか
XXXXXXXXXX.com.julianbaker.pwcnewsuk?
質問:
「aps-environment」エンタイトルメントをプロビジョニングプロファイルに追加する必要がありますか? (特に http://www.airplaysdk.com/node/3174 を参照)
IPhoneの開発を愛するが、それは時として大騒ぎになることがあります!
私が取り組んでいるアプリケーションで開発環境から本番環境に移行したときに、この質問を見つけました。このプロセスでは、新しいプロファイル、新しいアプリIDなどを作成しました。アプリIDとプロファイルを作成しましたが、チームエージェントはプッシュ通知を構成する必要がありました。新しいプロファイルを使用してテストを再開しようとしたときに(アプリケーションがプッシュ通知用に構成された後)、「アプリケーションに有効な 'aps-environment'資格文字列が見つかりません」という問題に遭遇しました。その後、ドキュメントの小さな警告を読んだことを思い出しました。
「ポータルが新しいプロビジョニングプロファイルを生成するために、何らかの方法でプロファイルを変更する必要があります(たとえば、オプションを切り替えます)。プロファイルがそれほど「汚れ」ていない場合、Push資格なしでプロファイルが与えられます。 」
私にとっては、プロビジョニングプロファイルを「ダーティ」にして再インストールするだけで、問題を解決することができました。ドキュメントによると、アプリがプッシュ通知用に構成される前にプロビジョニングプロファイルが作成されたため、これが必要でした。これはだれにも役立たないかもしれませんが、これはおそらくプロビジョニングプロファイルに手動で何かを追加する必要性を説明します(そして排除します)。
同じ「アプリケーションに有効な「aps-environment」資格文字列が見つかりません」という問題に遭遇しましたが、上記の解決策はうまくいきませんでした。
このエラーについて、または単に「aps-environment」というキーについても、非常に優れたドキュメントを見つけることができませんでした。
少しいじくり回した後、ここに私のための問題を解決したものがあります:
テキストエディターで開発プロビジョニング証明書「Appname.mobileprovision」を開き、「Entitlements」キーを探して、ここで見つかったすべての値を、コード署名資格設定で参照される資格ファイルに追加します。
内部にあるキー/値の例を次に示します。
<key>application-identifier</key>
<string>xyz.com.xyz.xyz</string>
<key>aps-environment</key>
<string>development</string>
<key>com.Apple.developer.ubiquity-container-identifiers</key>
<array>
<string>xyz.*</string>
</array>
<key>com.Apple.developer.ubiquity-kvstore-identifier</key>
<string>xyz.*</string>
<key>get-task-allow</key>
<true/>
<key>keychain-access-groups</key>
<array>
<string>xyz.*</string>
</array>
これらの値をすべてエンタイトルメントファイルに追加すると、アプリが正常にビルドされ、プッシュ通知の作業に戻ることができます。
これらの値がXCodeによって資格ファイルに自動的に追加されることになっているかどうかはわかりませんが、プロジェクトで私のために生成されていませんでした。
セットアップ:
Mac OS X 10.8 + Xcode 4.4
私の簡単な解決策:
xcuserdata
フォルダーを削除します。その問題に関するいくつかのヒント:
アプリのプッシュ通知をアクティブにした後、突然アドホックファイルを作成できなくなりました。次のようなアプリをインストールしようとしたときに、iPhoneのコンソールログでエラーが発生しました。
Apr 1 20:56:10 unknown installd[384] <Error>: entitlement 'keychain-access-groups' has value not permitted by a provisioning profile
Apr 1 20:56:10 unknown installd[384] <Error>: entitlement 'get-task-allow' has value not permitted by a provisioning profile
Apr 1 20:56:10 unknown installd[384] <Error>: entitlement 'application-identifier' has value not permitted by a provisioning profile
Apr 1 20:56:10 unknown installd[384] <Error>: 2ff66000 verify_signer_identity: Could not copy validate signature: -402620394
Apr 1 20:56:11 unknown installd[384] <Error>: 2ff66000 preflight_application_install: Could not verify executable at /var/tmp/install_staging.44jV0O/foo_extracted/Payload/PersonalTrainer-Tester-iPhone.app
Apr 1 20:56:11 unknown com.Apple.itunesstored[392] <Notice>: MobileInstallationInstall: failed with -1
Apr 1 20:56:11 unknown installd[384] <Error>: 2ff66000 install_application: Could not preflight application install
Apr 1 20:56:11 unknown installd[384] <Error>: 2ff66000 handle_install: API failed
Apr 1 20:56:11 unknown installd[384] <Error>: 2ff66000 send_message: failed to send mach message of 71 bytes: 10000003
Apr 1 20:56:11 unknown installd[384] <Error>: 2ff66000 send_error: Could not send error response to client
いくつかの テクニカルノート があり、codesign -d --entitlements - <YourAppName>.app
を使用して、Apple Push Notifications。の場合、codesignコマンドの出力生産または開発用に設定されたaps-environmentがありません。
私がこれまで知っていた限り、アドホックプロビジョニングプロファイルで署名されたアプリには、embedded.mobileprovision
フォルダー内に<YourAppName>.app
フォルダーがあり、次のような特定の部分が含まれています。
<key>Entitlements</key>
<dict>
<key>application-identifier</key>
<string>ABCDEFGH.com.myappname.tester</string>
<key>aps-environment</key>
<string>production</string>
<key>get-task-allow</key>
<false/>
<key>keychain-access-groups</key>
<array>
<string>ABCDEFGH.*</string>
</array>
</dict>
Codesignを使用した後、<YourAppName>.app
の実際のバイナリにもXMLが含まれていることがわかりました。これは、私のembedded.mobileprovision
ファイルとは非常に異なることを示しています。
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>application-identifier</key>
<string>ABCDEFGH.com.myappname.tester</string>
<key>get-task-allow</key>
<true/>
<key>keychain-access-groups</key>
<array>
<string>ABCDEFGH.com.myappname.tester</string>
</array>
</dict>
</plist>
これが私たち全員が経験しているエラーメッセージの原因だと思います。 (このエラーは、いくつかの異なるルートとstackoverflowの他の投稿が示唆している可能性があります)
The executable was signed with invalid entitlements.
The entitlements specified in your application's Code Signing Entitlements
file do not match those specified in your provisioning profile. (0xE8008016).
私の推測では、Xcodeにバグがあり、plistの設定がスキームで更新されないため、最終的に間違ったプロビジョニングプロファイルでアプリが署名されます。したがって、xcuserdataフォルダーを削除すると、すべてのスキームが削除されます。したがって、Xcodeは次回、適切な設定でそれらを再作成し、再び満足します。
基本的に答えは、他の誰もが言うのと同じあいまいです
動作するまでこれらの手順を静かに繰り返し、さまざまな組み合わせで約5回実行しました。また、開発からアドホックに切り替えました。明らかに必要ではありませんが、新しいmobileprovisionファイルが保証されました。
XCode4を使用して、同じ「アプリケーションに有効な 'aps-environment'資格文字列が見つかりません」を受信すると、次のことを行う必要がありました。
[プロジェクト]-> [ビルド設定]-> [コード署名]で、正しいプロビジョニングプロファイル(プッシュが有効になっているプロファイル)を選択していることを確認します。
それを機能させるために変更する必要があるのはそれだけでした。
上記のどれも私にとってはうまくいきませんでした!
プロビジョニングプロファイルで正しい方法でアプリを使用していることを確認してください。
つまり、Distributionのプッシュ通知のみをアプリで有効にしていて、XCodeを使用してビルド経由でプッシュ通知を機能させようとすると、これは機能しません。
この問題に遭遇し、App IDの開発のプッシュ通知を有効にし、開発プロビジョニングプロファイルを使用することで、エラーが発生せず、プッシュ通知を取得するかどうかを尋ねる正しいアラートビューが表示されました。
10.8 Xcode 4.4の解決策は、appname.entitlements
ファイル
DataProtectionClass
キーの値がNSFileProtectionComplete
である場合は、削除してください!
このキーを削除すると、デバイス上のXcodeからアプリをテストできます(シミュレーションに影響はありませんでした)。
同じ問題がありました。私にとっては、修正はこのようなものでした:
APN対応アプリケーションを実行しようとしても、ワイルドカードプロファイル([prefix]。*)は機能しません。APN対応プロファイルを指定する必要があります。
私の問題はこれでした。プッシュ通知を構成したアプリを作成し、アプリデリゲートでプッシュ通知に登録しました:
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
しかし、アプリをリリースする前に、他の開発者ポータルで新しいプロビジョニングプロファイルを作成する必要がありました。正しいプロビジョニングを設定したアプリケーションターゲットで、新しいアプリID、開発と配布用の新しいプロビジョニング、ダウンロードした新しいプロビジョニングを作成しました。また、バンドル識別子を変更しました。しかし、私はそのエラーを受け取っていました。
問題は、新しいAppIdがプッシュ通知用に構成されていないが、呼び出していることでした
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
エラーを作成していました。プッシュ通知を構成したときにエラーが再び表示されませんでした。
選択が正しいことを確認してください。プロビジョニングプロファイル。チームプロビジョニングプロファイルを使用しようとしていることがわかりました。(アプリケーション識別子:*)リストのさらに下には、アプリ用の正しいものがありました。
数時間後にこれを理解したばかりなので、JulianBが言ったことに加えて、
私の解決策は、削除して再度作成することでした開発プロビジョニングプロファイル。 「無効」としてリストされている-有効期限が切れておらず、更新も失敗しました(Xcode 4.3.2およびiOS 5.1)
プロファイルを正しくして、これが私のために働くようにしてください。このヘルプを願っています。
私にとっては、バンドル識別子をランダムなものに変更した後に機能しました。署名エラーが実際に表示されることを確認します(オーガナイザーとデバイスからすべてのプロビジョニングプロファイルを削除し、クリーンビルドCMD + OPT + SHFT + K
その後CMS + SHFT + K
その後 CMD + R
)そして、バンドル識別子を適切なものに戻します。
私はこの問題を抱えていました、シナリオは次のとおりでした:
プッシュ通知サポートなしでアプリIDをセットアップしました。 Xcode 5.1 + iOS 7.1を使用しています
後で、アプリIDを編集して、開発および運用でプッシュ通知を追加しました。
両方のAPNs証明書を作成しました。
Xcodeに接続されたデバイスを使用してPNをテストすると、すべてが正常に機能します。アプリを本番環境にリリースすると、問題が発生します。
"Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' entitlement string
found for application" UserInfo=0x15b200 {NSLocalizedDescription=no valid
'apsenvironment' entitlement string found for application}" error.
私のために働いた: