2

プッシュ通知を使用してアプリの更新をリリースしましたが、サーバーを確認すると、データベースに送信されたトークンが「null」であることがわかりました。アドホック用の開発証明書と本番証明書を使用して、多くのテストを行いました。どちらも正常に機能しましたが、アプリストアのバージョンは機能せず、理由はわかりません。この問題について約2週間前に投稿しましたが、アドホックに使用したプロビジョニングプロファイルを使用しないようにとの連絡があったため、同じIDで新しいプロビジョニングプロファイルを作成しました。アップデートは昨日リリースされましたが、まだ同じ問題があります。ユーザーがこれらすべての更新に悩まされているため、永続的な解決策を見つける必要がありますが、アプリストアで承認されるまでテストする方法がわかりません。

誰かが考えや援助を提供してくれるなら、私は本当にそれをいただければ幸いです。前もって感謝します。

PS役立つ場合は、デバイスからアプリを削除し、アプリストアから再度インストールしました...プッシュ通知を受信するかどうかを尋ねられませんでしたが、電話の設定からアプリのプッシュが有効になっています...

4

4 に答える 4

11

APNs通信には3つのステップがあります。

  1. アプリは、iOS内のappDelegateでAPNを受信するように登録します。これにより、通知の送信に使用する必要のあるdeviceTokenが提供されます。
  2. アプリはdeviceTokenを管理サーバーに送信します
  3. 管理サーバーはAppleAPNsサーバーに接続して、プッシュ通知を送信します

あなたの場合、問題はステップ1にあると理解しています。これは、デバイスIDがnullであり、アプリがAPNの許可について尋ねていないためです。したがって、サーバー証明書を変更したり、gateway.sandbox.push.apple.comからgateway.push.apple.comに切り替えたりしても、エラーが以前に発生したため、役に立ちません。

これは明らかに証明書の問題です。AppleiOSプロビジョニングポータルで必要なすべての手順を実行したことを確認する必要があります。

  1. アプリのバンドル識別子を使用してAppIdを作成します。*などのワイルドカーは避けてください。
  2. アプリのInAppPurchaseオプションを構成します(通信のステップ3で使用されるため、これは問題ではありません)
  3. 1.で使用したAppIdを使用するDistributionのプロビジョニングプロファイルを作成し(これが問題である可能性があります)、ダウンロードします
  4. XCodeプロジェクト設定を開き、アーカイブ操作で3にダウンロードされた正しいプロファイルが使用されていることを確認します。オーガナイザーが要求したときに正しいプロファイルを選択していることを確認してください。(前の手順で問題がなかった場合、これは間違いなく問題なので、2回または3回確認してください)。

AppStoreに再度送信する前に、バイナリが正しいプロファイルで生成されたことを確認する場合は、次の手順を実行します。

  1. Finderでバイナリを開きます(まず、Library / Developer / XCode / Archives / ...でアーカイブを開き、右クリックして[パッケージの内容を表示]をクリックし、/ Products / Applications / youAppに移動して、パッケージの内容をもう一度表示します)、
  2. Embedded.mobileprovisionファイルを探し、テキストエディタで開きます
  3. バイナリコンテンツの中で、「application-identifier」と「aps-environment」と呼ばれるいくつかのフィールドをローカライズできるはずです。それらが正しい値を持っていることを確認してください。

以前にアーカイブしたアプリを確認すると、間違ったプロファイルが表示されることは間違いありません。これが、アプリがdeviceTokenを返さない唯一の原因です。(受信してもサーバーに正しく送信されない場合を除き、上記の通信のステップ2で問題が発生します)。

于 2012-06-17T16:52:39.263 に答える
2

Gateway.sandbox.push.apple.comではなくgateway.push.apple.comを使用していますか?

于 2012-06-16T21:43:23.413 に答える
0

アプリケーションの新しいプロビジョニングプロファイルを作成した場合は、サーバーでも新しい証明書を生成する必要があると思います。

于 2012-06-15T10:35:54.890 に答える
0

デバイストークンnullの問題を含むアプリがインストールされているデバイスを接続することにより、「コンソールアプリ」([オーガナイザー]>[デバイス]>[コンソール])でアプリのログを確認できる場合。


  • これに基づいて
    、アプリケーションに有効な「aps-environment」エンタイトルメント文字列が見つかりません

    この問題は、APNS証明書を作成する前にプロビジョニングプロファイルが作成されるため、現在のプロビジョニングプロファイルにAPNS情報が含まれていないことが原因です。

    解決策:新しいプロビジョニングプロファイルを作成し、Xcodeでプロビジョニングプロファイルを選択すると、エラーがクリアされます。

  • ターミナルコマンドを実行して、「本番暫定プロファイル」がapns環境をサポートしているかどうかを確認できます。次のようになります。

セキュリティcms-D-i Path_Of_Your_AppStoreDistribution.mobileprovision

<key>Entitlements</key>
<dict>
    <key>application-identifier</key>
    <string>H22LLUHM4D.com.company.appName</string>
    <key>aps-environment</key>
    <string>production</string>
    <key>get-task-allow</key>
    <false/>
</dict>
于 2013-12-02T07:24:23.183 に答える