1. ホーム
  2. ios

[解決済み] Xcode 4.3で「no valid 'aps-environment' entitlement string found for application」を修正するにはどうしたらいいですか?

2022-04-26 20:30:26

質問

プッシュ通知を受け取ることができるシンプルなiOSアプリを一生懸命作っています。 これを行う唯一の理由は、他のチームメンバーが使用するための手順を確立することであり、ウェブ上の他の場所でそのような手順の最新かつ実用的なバージョンを見つけることができませんでした。 私たちのショップはiOS開発にはかなり新しく、私個人はiOS開発およびXcodeの経験が全くありません。 Appleや他のところから何十ものチュートリアルや記事、トラブルの投稿を読み漁り、もう少しでたどり着けそうな気がしています...。

私はXcode 4.3を使っていて、最初はiOS 5.1にだけデプロイしようとしています。最近、Xcodeの以前のバージョンと比べていくつかのことが変わったかもしれないと思いますが、やはり私はすべて初めてで、完全に混乱し複雑になっていることがわかります)。

1) iPhoneのプロビジョニングプロファイルで、Pushを有効にしています。

2) テスト用のXcodeプロジェクトで、そのプロビジョニングプロファイルを署名IDとして選択しました(Build Settings > Code Signingにて)。

3) Summary と Info > Custom iOS Target Properties のバンドル識別子が正しく設定されている*(と思うのですが?)

4) デリゲートのdidFinishLaunchingWithOptionsで、registerForRemoteNotificationTypesが呼び出されています。

5) 私のデリゲートには、didRegisterForRemoteNotificationsWithDeviceToken と didFailToRegisterForRemoteNotificationsWithError があり、それぞれデバイストークンとエラーを記録するようセットアップされています。

6) SummaryでEnable Entitlementsにチェックを入れています。

7) そのすぐ下にある Entitlements File は Tinker6 (私のテストプロジェクトの名前) で、これは Enable Entitlements をチェックしたときに自動的に生成されたものです。

8) Tinker6.entitlements ファイルに次のような記述があります (これはウェブ上のいくつかの異なる投稿に基づいて正しいと判断しましたが、Apple 自身から決定的なものは見つけられませんでした)。

更新情報

9) また、エンタイトルメントファイルなしで全部試しましたが、基本的に同じ結果になりました。

10) 私のmobileprovisionファイルの内容は、エンタイトルメントをきちんと含んでいます(番号とドメインをスクランブルしていますが、構造的には同じです)。

<key>application-identifier</key>
<string>12355456A7.com.whatever.tinker</string>
<key>aps-environment</key>
<string>development</string>
<key>get-task-allow</key>
<true/>
<key>keychain-access-groups</key>
<array>
    <string>12355456A7.*</string>
</array>

/更新終了

これを端末で実行しようとすると、Xcodeの出力に以下のようなエラーが表示されます。

2012-06-11 12:45:23.762 Tinker6[13332:707] Failed to get token, error: 
Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' 
entitlement string found for application" UserInfo=0x24a3b0 
{NSLocalizedDescription=no valid 'aps-environment' entitlement string 
found for application}

get-task-allowをNOに、aps-environmentをproductionに、4通りの組み合わせを試しましたが、同じでした。

どうすればいいのでしょうか? これに関する決定的なドキュメントはどこにあるのでしょうか?

-- さらに詳しい背景は以下の通りです。 --

*バンドルIDに関しては、ProvisioningプロファイルのApp IdsやProfile IDとどのように関連付けるべきか、まだ明確ではありません。 Provisioningポータルの[App Ids]には、このような項目があります(番号とドメインは省略されています)。

そして、バンドルIDが設定されている2つの場所には、次のようなものがあります。

これらが正しいのか、あるいは一方または両方を 12355456A7.com.whatever.tinker に設定する必要があるのか、まったく自信がありません。プロセスの早い段階でこれらを試しましたが、成功しませんでした...。

備考 同じようなタイトルの投稿がたくさんあることは承知していますが、与えられたファイル名などから、どれも古いと思われますし、どの解決策も有用とは思えません。 私は、私が与えたより詳細なレベルは、質の高い応答を保証することを期待しています。 もし、あなたが解決策につながるような質の高い回答をした場合、私は賞金を授与するとともに、あなたの回答をツイッターや私のブログで宣伝することになると思います。 特に、あなたが本当に良い"ここにあるものをクロスポストして投稿した場合。 正確 500 steps you need to get a simple push notification app working including provisioning and whatever else" article on your blog or whatever.

解決方法は?

答えは、やり直し、すべてを同じにし、新しいプロビジョニングプロファイルを作成し、それをインストールすることでした。 これでうまくいきました。 すべての詳細(モバイルプロビジョニングのエンタイトルメント)を確認すると、以下のようになります。 まさに というのは、ここで質問したこととすべて同じです。 しかし、今はうまくいっています。 Appleです。WAT?

もちろん、こうするのが当然だったのでしょう。 もし プロビジョニングプロファイルの削除が可能であること。 しかし、それは不可能なので、テストプロファイルの束で我々のチームを混乱させたくはありませんでした。 それでも、ついに我慢の限界に達して、とにかく試してみたところ、結局うまくいきました。 まあ、いいや。