私は、プッシュ通知を受け取ることができるシンプルでシンプルな iOS アプリを作成するために非常に一生懸命努力してきました。私がこれを行う唯一の理由は、他のチームメンバーが使用する手順を確立することであり、Web 上の他の場所でそのような手順の最新の有効なバージョンを見つけることができませんでした. 私たちのショップは iOS 開発に関してかなり新しいもので、個人的には iOS 開発と Xcode の経験がまったくありません。Apple や他の場所からの数十のチュートリアル、記事、およびトラブルの投稿に出くわしましたが、もうすぐそこにいるような気がします...
これが私がしなければならないところです(私はXcode 4.3を使用していて、最初はiOS 5.1だけに展開しようとしていることに注意してください。最近、以前のバージョンのXcodeと比べていくつかのことが変更された可能性があることを収集していますが、繰り返しますが、私はすべてに慣れていませんこれ - そしてそれが完全に混乱し、複雑であることがわかります):
1) プッシュが有効になっている iPhone にプロビジョニング プロファイルがあります。
2) 私のテスト Xcode プロジェクトでは、そのプロビジョニング プロファイルを署名 ID として選択しました ([ビルド設定] > [コード署名] で)。
3) [概要と情報] > [カスタム iOS ターゲット プロパティ] の下にバンドル ID が適切に設定されています* (私は思いますか??)
4) デリゲートの didFinishLaunchingWithOptions で registerForRemoteNotificationTypes が呼び出されました
5) デリゲートに didRegisterForRemoteNotificationsWithDeviceToken と didFailToRegisterForRemoteNotificationsWithError があり、それぞれデバイス トークンまたはエラーをログに記録するように設定されています
6) [概要] で [資格を有効にする] をオンにしました。
7) 選択した権利ファイルのすぐ下にあるのは、Tinker6 (私のテスト プロジェクトの名前) です。これは、[権利を有効にする] をオンにしたときに自動的に生成されたものです。
8) Tinker6.entitlements ファイルには次のようなものがあります (これは Web 上のいくつかの異なる投稿に基づいて収集したものですが、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 に関しては、プロビジョニング プロファイルのアプリ ID とプロファイル ID に関連してこれをどのように設定する必要があるかについては、まだ明確ではありません。App Ids の下のプロビジョニング ポータルには、次のようなものがあります (ここでも、番号とドメインをスクランブルします)。
そして、2 つの場所のバンドル ID が設定されています。
これらが正しいかどうか、または一方または両方を 12355456A7.com.whatever.tinker に設定する必要があるかどうかはまったくわかりませんが、プロセスの早い段階でそれらを試してみましたが、成功しませんでした...
似たようなタイトルの投稿がたくさんあることに注意してください。ただし、ファイル名などに基づいてそれらはすべて古くなっているように見えます。実際、解決策はどれも役に立たないようです。私が提供したより詳細なレベルが質の高い回答を保証することを願っています. できるだけ早く報奨金を割り当てます。ソリューションにつながる質の高い回答を提供してくださった場合は、報奨金を授与し、Twitter やブログで回答を宣伝します。特に、「プロビジョニングなどを含む、シンプルなプッシュ通知アプリを機能させるために必要な正確な500 ステップを紹介します」という非常に優れた記事をブログなどに投稿する場合は特にそうです。