70

xcodeはアプリケーションの識別子をどこから取得するのですか?を読みました。、{PRODUCT_NAME}からのXCodeバンドル識別子のフォーマット

プッシュ通知を実行して恐ろしいものにしようとしています

"Error Domain = NSCocoaErrorDomain Code =3000"アプリケーションに有効な'aps-environment'エンタイトルメント文字列が見つかりません"UserInfo=0x15b200{NSLocalizedDescription=アプリケーションに有効な'aps-environment'エンタイトルメント文字列が見つかりません}"エラー。

次のようなすべての手順を正しく実行したと確信しています。

  • プロビジョニング証明書のかなり前にプッシュ証明書を作成しました
  • 'Entitlements.plist'を作成しました
  • get-task-allow booleanを追加し、trueに設定しました(アドホックリリース)

私が頭を悩ませることができないと思うのは、バンドル識別子だけです。

プッシュ証明書は

XXXXXXXXXX.com.julianbaker.pwcnewsuk

PwCNewUK-Info.plistのバンドル識別子は

com.julianbaker.${PRODUCT_NAME:rfc1034identifier}

手動で変更した場合

com.julianbaker.pwcnewsuk

アプリがPwCNewsUKとして表示されるため、UDIDの不一致エラーが発生します

私がこれをグーグルで検索したとき、問題についていくらかの混乱があるようですが、それらは一致しなければならないようですか?

質問:


XXXXXXXXXX.com.julianbaker.pwcnewsukのプッシュ証明書と一致するバンドル識別子は何である必要がありますか?

質問:

プロビジョニングプロファイルに「aps-environment」エンタイトルメントを追加する必要がありますか?追加する場合は、どこでどのように追加しますか?(特にhttp://www.airplaysdk.com/node/3174を参照してください)

iPhoneの開発は大好きですが、それは時にはヘッドバンガーになる可能性があります。

4

19 に答える 19

88

この質問は、作業中のアプリケーションで開発環境から本番環境に移行するときに見つけました。このプロセスには、新しいプロファイル、新しいアプリIDなどの作成が含まれていました。アプリIDとプロファイルを作成しましたが、チームエージェントはプッシュ通知を構成する必要がありました。新しいプロファイルでテストを再開しようとすると(アプリがプッシュ通知用に構成された後)、「アプリケーションに有効な'aps-environment'エンタイトルメント文字列が見つかりません」という問題が発生しました。次に、ドキュメントの小さな警告を読んだことを思い出しました。

「ポータルが新しいプロビジョニングプロファイルを生成するには、何らかの方法でプロファイルを変更する必要があります(たとえば、オプションを切り替える)。プロファイルがそれほど「汚れていない」場合は、プッシュ資格のないプロファイルが与えられます。 「」

出典:ローカルおよびプッシュ通知プログラミングガイド

私にとっては、プロビジョニングプロファイルを「ダーティ」にして再インストールするだけで、問題を解決できました。ドキュメントによると、アプリがプッシュ通知用に構成される前にプロビジョニングプロファイルが作成されたため、これが必要でした。これは誰かを助けるかもしれないし、助けないかもしれませんが、これはおそらくプロビジョニングプロファイルに手動で何かを追加する必要性を説明(そして排除)します。

于 2011-09-25T18:33:35.433 に答える
21

同じ「アプリケーションに有効な「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によってエンタイトルメントファイルに自動的に追加されることになっているのかどうかはわかりませんが、私のプロジェクトでは確かに生成されていませんでした。

于 2011-09-12T03:38:21.520 に答える
6

設定:

Mac OS X 10.8 + Xcode 4.4

私の簡単な解決策:

  1. アプリIDのプッシュ通知を設定した後、アドホックプロビジョニングプロファイルを再発行し、Xcodeにインポートします。
  2. .xcodeprojフォルダーを調べて(右クリック->パッケージの内容を表示)、xcuserdataフォルダーを削除します。
  3. それでおしまい ;)

その問題に関するいくつかのヒント:

アプリのプッシュ通知をアクティブにした後、突然アドホックファイルを作成できなくなりました。次のようなアプリをインストールしようとしたときに、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

アプリがApplePushNotifications用に正しく署名されているかどうかを確認するために使用することを推奨するテクニカルノートがいくつかあります。codesign -d --entitlements - <YourAppName>.appcodesignコマンドの出力に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を使用した後、実際のバイナリにはXMLも含まれていることに気付きました。これは、私のファイル<YourAppName>.appとは非常に異なることを示しています。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は次回、適切な設定でそれらを再作成し、再び満足します。

于 2012-04-01T22:26:10.703 に答える
5

本質的に、答えは他の誰もが言うのと同じ漠然としたものです

  • 「Entitlements.plist」が追加されていることを確認してください(新しいファイル/コード署名/資格)
  • Entitlements.plistに「get-task-allow」(ブール値オフ)を追加します
  • Entitlements.plistに「aps-environment」「production」ペアを追加します-この最後の手順は不要かもしれませんが、機能する直前に行った手順の1つでした
  • iPhone / iPodから古いmobileprovisionファイルを削除します([設定] / [一般])。
  • XCodeOrganizerから古いmobileprovisionファイルを削除します
  • iPhone/iPodからアプリを削除する
  • XCodeを終了します
  • プロビジョニング証明書の新しいコピーをダウンロードする
  • テキストエディタを使用して、証明書の「aps-environment」「production」ペアを確認します
  • XCodeを起動します
  • XCode Docアイコンにドラッグして、新しいmobileprovisionファイルを追加します
  • ターゲット情報:コード署名:コード署名IDで正しい証明書を再割り当て/割り当てたことを確認してください
  • ビルド結果を再確認して、正しいプロファイルを使用し、正しく署名されていることを確認します

それが機能するまで、これらの手順を静かに繰り返します。さまざまな組み合わせを約5回行いました。また、開発からアドホックに切り替えました。これは明らかに必要ではありませんが、新しいmobileprovisionファイルを保証しました。

于 2011-04-29T16:39:46.797 に答える
5

XCode4を使用して、同じ「アプリケーションに有効な「aps-environment」エンタイトルメント文字列が見つかりません」を受信すると、次のことを行う必要がありました。

  • オーガナイザーのライブラリパネルとデバイスパネルの両方から古いプロビジョニングプロファイルを削除します
  • 開発者ポータルWebサイトからAPNdevを有効にして新しいプロファイルを再生成します
  • オーガナイザーのライブラリパネルとデバイスパネルの両方に新しいプロファイルが追加されていることを確認してください
  • アプリをデバイスから手動で削除します(アプリが揺れるまで押し続けてXを押します)
  • CMD + OPT + SHIFT + K(クリーンビルドフォルダー)およびCMD + SHIFT + K(クリーン)
  • [プロジェクト]>[ビルド設定]>[コード署名]で適切なプロファイルを設定します
  • [ターゲット]>[概要]で[資格を使用]がオンになっていないことを確認します
于 2011-12-15T22:05:27.470 に答える
3

[プロジェクト]->[ビルド設定]->[コード署名]で、正しいプロビジョニングプロファイル(プッシュが有効になっているプロファイル)を選択していることを確認します。

それを機能させるために変更する必要があるのはそれだけでした。

于 2012-05-21T18:30:41.340 に答える
3

上記のどれも私のために働いていませんでした!

  1. XcodeOrganizerのすべてのプロビジョニングプロファイルを削除します
  2. キーチェーン内のすべての開発者証明書を削除します
  3. iPhoneデバイスのすべてのプロビジョニングプロファイルを削除します
  4. iOSプロビジョニングポータルで、Xcodeによって自動的に作成された開発プロビジョニングプロファイルを削除します
  5. 正しい(証明書/ AppID /デバイス)の組み合わせを割り当てて、新しいプロビジョニングプロファイルを作成します
  6. 新しいプロビジョニングプロファイルをダウンロードする
  7. 新しいプロビジョニングプロファイルXcodeOrganizerにインポートします
  8. CMD+オプション+Shift+ K
  9. CMD+シフト+K
  10. CMD + R
  11. やったー:)
于 2012-08-31T21:49:42.920 に答える
2

プロビジョニングプロファイルでアプリを正しい方法で使用していることを確認してください。

つまり、アプリで配布用のプッシュ通知のみを有効にしていて、XCodeを使用してビルドすることでプッシュ通知を機能させようとしている場合、これは機能しません。

この問題が発生し、アプリIDの開発のプッシュ通知を有効にしてから、開発プロビジョニングプロファイルを使用することで、エラーが発生しなくなり、プッシュ通知を取得するかどうかを尋ねる正しいアラートビューが表示されました。

于 2013-04-17T13:27:27.523 に答える
1

10.8 Xcode 4.4の解決策は、appname.entitlementsファイルを開くことです。

DataProtectionClassキーに値がある場合は、NSFileProtectionCompleteそれを削除してください。

このキーを削除すると、デバイス上のXcodeからアプリをテストできます(シミュレーションには影響しませんでした)。

于 2012-06-06T12:25:33.857 に答える
1

私も同じ問題を抱えていました。私にとって、修正は次のようでした:

  1. オーガナイザーからプロビジョニングプロファイルを削除して再読み込みしました。
  2. プロジェクト設定->コード署名で名前付きプロビジョニングプロファイルを選択しました。どういうわけかそれはblabla。*アイデンティティを使用したかった。

ワイルドカードプロファイル([prefix]。*)は、APN対応のアプリケーションを実行しようとすると機能しません。APN対応のプロファイルを指定する必要があります。

于 2012-06-20T08:50:47.760 に答える
0

私は数時間後にこれを理解したので、JulianBが言ったことに加えて、

  • アプリケーションアイコンがあることを確認してください。あなたはおそらくそれを持っていますが、私たちがアイコンバージョンの間にいたときに私はたまたまプッシュを追加しました。いろいろ試してみましたが、結局はそれだけだったので、証明書や署名の設定の問題ではないかもしれません。
  • 破損した画像ファイルも読んだことが原因である可能性があります
  • entitlements.plistにaps-environmentキーを追加/表示しませんでした
  • 構築する前にすべてのターゲットをクリーンアップする
于 2011-05-25T14:01:46.450 に答える
0

私にとっては、バンドル識別子をランダムなものに変更した後に機能しました。署名エラーが実際に表示されることを確認し(オーガナイザーとデバイスからすべてのプロビジョニングプロファイルを削除し、クリーンビルドを実行してCMD + OPT + SHFT + KからCMS + SHFT + KCMD + R、バンドル識別子を適切なものに戻します。

于 2012-03-27T17:09:33.387 に答える
0

私の解決策は、開発プロビジョニングプロファイルを削除して再作成することでした。「無効」としてリストされていました-有効期限が切れておらず、更新にも失敗しました(Xcode4.3.2およびiOS5.1)

于 2012-03-28T12:00:44.033 に答える
0

正しく選択したことを確認してください。プロビジョニングプロファイル。チームプロビジョニングプロファイルを試していることがわかりました。(アプリケーション識別子の場合:*)リストのさらに下に、アプリの正しいプロファイルがありました。

于 2012-05-28T05:54:14.143 に答える
0

私の問題はこれでした。プッシュ通知を構成したアプリを作成し、アプリデリゲートでプッシュ通知を登録していました:

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];

しかし、アプリをリリースする前に、他の開発者ポータルで新しいプロビジョニングプロファイルを作成する必要がありました。正しいプロビジョニングを設定したアプリケーションターゲットで、新しいアプリID、開発と配布用の新しいプロビジョニングを作成し、新しいプロビジョニングをダウンロードしました。また、バンドル識別子を変更しました。しかし、私はそのエラーを受け取っていました。

問題は、新しいAppIdがプッシュ通知用に構成されていないことでしたが、

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];

エラーを作成していました。プッシュ通知を設定したとき、エラーが再び表示されませんでした。

于 2012-06-29T11:45:38.807 に答える
0

私はこの問題を抱えていました、シナリオは次のとおりでした:

プッシュ通知をサポートせずにアプリIDを設定しました。Xcode 5.1 + iOS7.1を使用しています

その後、アプリIDを編集して、開発と本番環境でプッシュ通知を追加しました。

両方のAPN証明書を作成しました。

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.

私のために働いた解決策は:

  1. 開発および配布用のプロビジョニングプロファイルを削除します(Xcodeおよび開発者ポータル)。
  2. アプリIDを削除します(開発者ポータル)。
  3. 開発と本番用のプッシュ通知サポートを使用して新しいアプリIDを作成します。
  4. NEWAppIDを使用して新しいプロビジョニングプロファイルを作成します。
  5. それらをXcodeにインストールします。
  6. 開発と配布のリリースをテストします。
于 2014-04-01T18:13:42.407 に答える
0

ここに画像の説明を入力してください

プロファイルを正しくして、これが私のために機能するようにしてください。この助けを願っています。

于 2014-06-11T10:55:23.470 に答える
0

私の場合、このエラーの解決策は、証明書を何時間もいじった後、簡単であることがわかりました...

プロジェクト構成のCapabilitiesタブでPush Notification、環境ファイルを生成するためにフラグを有効にする必要がありました。

macOS Sierra 10.12-Xcode 8.1

ここに画像の説明を入力してください

于 2016-11-07T09:13:31.307 に答える
-2

実際、あなたの暫定プロファイルはアップルデベロッパサイトから削除されました。

于 2015-02-21T13:16:28.380 に答える