4

私が抱えている問題の答えを探してから1週間が経ちましたが、何も見つからないので、ここで質問します!

ユーザーに通知を送信できる iPhone アプリケーションを作成しました。そのため、PHP でコーディングされ、apns-php (http://code.google.com/p/apns-php/) を使用する通知サーバーがあります。

私のサーバーはいつでも通知を送信できるため、無期限に実行されるワーカーがあり、送信する通知を受信するたびに (送信する通知はキューにあります)、通知を送信します。可能な限り高速にするために、ワーカーには通知を送信できる 10 個のスレッドがあります。

ワーカーを開始すると、受け取るはずの通知を受け取ります。

問題は、しばらくすると (特定の時間が経過した後なのか、特定の量の通知が送信されたのかはわかりません... または他の何か!)、新しい通知を受信しないことです。apns-php のログを見ると、何もありません。すべてのメッセージがエラーなしで APNS サービスに送信されているようです (apns-php は拡張フォーマットを使用しています)。ワーカーを再起動すると、通知が再び届きます (ただし、しばらくの間だけです)。

stackoverflow と Google でこの問題を検索しましたが、これまでのところ、私が見た唯一の応答は次のとおりです。

  • 使用されている証明書/プロファイルに問題があります。ワーカーを起動すると通知を受け取るので、それが問題になることはありません。
  • データベースにはいくつかの開発デバイス トークンがあり、APNS が接続を閉じます。確かに、いくつかの開発デバイス トークンがデータベースに存在する可能性がありますが、apns-php コードを見ると、接続が閉じられている場合、新しい接続が開かれています。そのため、これが不正なデバイス トークンの後に送信されるすべての通知にどのように影響するかわかりません。

通知は私たちのサービスにとって非常に重要であるため、この問題は本当に私を夢中にさせます. したがって、ここで何が問題なのかを誰かが知っていれば、それは本当に命の恩人になるでしょう!

PS: 私がやっている具体的なことは何もないので、コードは投稿していません。送信する通知ごとに apns-php の send() 関数を使用しています。

4

1 に答える 1

0

私はついに問題の原因を見つけました。APNSへの開いた接続で2時間アクティビティがない場合、接続はタイムアウトになり、APNSは接続を閉じます。

apns-phpが接続が閉じられたことを検出しない理由はまだわかりません。しかし、30分の非アクティブ期間の後に通知を送信するたびにAPNSに自動的に再接続することで問題を解決しました(2時間を選択することもできましたが、問題がないことを確認したいだけです)。

于 2012-12-20T10:12:15.920 に答える