2

私はAppleのドキュメントに従いました。

アプリケーション内で、通知(アラート、バッジ、サウンド)を正常に登録し、デバイストークンをサーバーに送信します(これは32バイトの文字列で、転送と保存のために16進数でエンコードします)。これはすべて機能します。

ドキュメントに記載されているように、私のプロビジョニングプロファイルには、「開発」に設定された「aps-environment」が含まれています。証明書とこの証明書に関連付けられたキーの両方からPEMファイルを生成しました。

サーバーから通知を送信するためにGrocer(Github上)を使用しています。Appleは通知を喜んで受け入れますが、デバイスに届くことはありません。過去12時間に何度も試しましたが、アプリがフォアグラウンドで実行されていないことを確認しました。エンドポイントとしてgateway.sandbox.push.apple.comを使用しています。

私は途方に暮れています。私は何を見るべきですか?Apple独自のトラブルシューティングガイド は私を助けませんでした。

一部の人々は、アドホックプロビジョニングプロファイルの生成について言及しています(ただし、Appleはこれが必要であるとは述べていません)。とにかく試してみましたが、プロファイルにaps-environmentで「本番環境」と表示され、デバイスにアプリケーションをインストールできません。

編集| PEM証明書が正しく設定されていないと推測できます...完全にランダムな証明書を使用している場合でも、grocerが通知を「送信」しているように見えるためです。エラーをデバッグする方法がわからない。

4

2 に答える 2

2

開発者プロファイルを使用する場合は、サンドボックスゲートウェイが必要です。

gateway.sandbox.push.apple.com

それでも機能しない場合は、デバイスを再起動してみてください。これはしばしば役に立ちます!

アプリがリリースされたら、リンクを変更することを忘れないでください!

于 2013-01-28T00:02:40.630 に答える
0

これは、クライアント側でデバイストークンを誤って16進エンコードしただけであることが判明しました。私はこれを効果的に行いました:

char *buf = malloc(sizeof(char) * 2 * numBytes);

while (numBytes--)
  sprintf(buf+=2, "%02x", *(bytes++));

問題は、それbyteschar*であるはずunsigned char*だったのに、データが破損していたことでした。

于 2013-01-29T12:13:38.527 に答える