1

PHP を使用して iPhone アプリ用のプッシュ通知 (APNS、Apple プッシュ通知サービス) をコーディングしました。デバイスからアプリが削除されていない間、すべてが正常に機能しています。Appleのフィードバック サービスを使用して、削除されたデバイスを取得します。デバイスを取得した場合、データベースでそれらをINACTIVEとしてマークし、それらのデバイスにそれ以上プッシュ通知を送信しないようにします。

問題は、Apple が遅いことです。デバイスからアプリを削除すると、要求が Apple に送信され、私はフィードバック サービスを使用してデバイスを収集します。しかし、Apple は非アクティブ化されたデバイスをすぐに転送しないため、非アクティブなデバイスにプッシュ通知を送信できないため、次のエラーが発生します。

PHP Warning: fwrite(): SSL: Broken pipe in apns.php on line 155

私のフィードバック サービス スクリプトは 5 分ごとに実行されますが、Apple からの更新は 10 ~ 15 分ごとに行われます。10 ~ 15 分以内にプッシュ通知を送信すると、上記のエラーが表示されます。これは、データベースではデバイスがまだACTIVEとしてマークされており、Apple サーバーではデバイスがINACTIVEとしてマークされているためです。

フィードバック サービスまたはプッシュ サービスに接続するのに問題はありませんが、常にフィードバック サービスからデバイスを取得するとは限りません。

よろしく、フォックス

4

1 に答える 1

1

Apple.com開発者フォーラム(https://devforums.apple.com/thread/114446)からの回答:

サーバーは切断を検出し、必要に応じて再接続する必要があります。ネットワーキングが関係している場合、「インスタント」なものはありません。常にある程度のレイテンシーがあり、コードはそれを考慮に入れる必要があります。また、拡張されたバイナリインターフェイスの使用を検討して、戻り応答を確認し、接続が切断された理由を確認できるようにします。TCPキープアライブの結果として接続が切断されることもありますが、これはAppleの制御の範囲外です。

したがって、サーバーが切断を検出した場合は、すべてのデバイスをINACTIVEに設定します。

于 2011-07-29T08:42:11.970 に答える