10

アプリケーションでGCMを使用していますが、問題があります。

ほとんどの場合、メッセージはすぐに届きますが、途中で行き詰まったように、5分後に次々とメッセージが届くことがあります。これは正常ですか?

4

3 に答える 3

8

クライアント電話の GCM フレームワーク部分は、ポート 5228 でTCP 接続を使用します。この接続はプッシュ通知に使用されますが、すべての tcp 接続として、厳密なポリシーを適用して非アクティブな tcp 接続を強制終了する一部のルーター/キャリアでタイムアウトになる可能性があります ( tcp アイドル タイムアウト)。

私のように、ほとんどのwifiルーターは、たとえば5分後に非アクティブな接続を強制終了します。

GCM フレームワークはキープアライブメカニズムを使用して、wifi では 15 分ごと、3G では 28 分ごとにハートビート ネットワーク パケットを送信します。このキープアライブは、すべてのユーザーにとって常に信頼できるとは限りません。

ここで Google に問題を公開しました: https://productforums.google.com/forum/#!category-topic/nexus/connecting-to-networks-and-devices/fslYqYrULto 彼らは現在問題があることに同意します。

于 2013-08-25T10:57:49.297 に答える
6

これまでの非常に限られたテストではまだ気づいていませんが、ドキュメンテーションの理解からすると、それほど驚くべきことではありません。

GCM は通常、メッセージが送信されるとすぐに配信します。ただし、これが常に可能であるとは限りません。たとえば、デバイスの電源がオフになっている、オフラインになっている、またはその他の理由で使用できない可能性があります。他の場合では、送信者自身が、delay_while_idle フラグを使用して、デバイスがアクティブになるまでメッセージを配信しないように要求する場合があります。最後に、GCM は意図的にメッセージを遅らせて、アプリケーションが過剰なリソースを消費し、バッテリー寿命に悪影響を与えないようにする場合があります。

これと残りのドキュメント全体の言語の間で、あなたが説明したことは、まさに私が期待するもののように聞こえます。すぐに配達されるという保証はありません。通常、メッセージはすぐに配信されますが、そうでない場合もあります。

于 2012-07-27T04:45:43.470 に答える
0

元のポスターと同じものを見つけています。「目覚める」のに最大5分かかるようで、その後、メッセージを非常に迅速に処理します.

私のアプリは、聴覚障害者との会話でテキスト アイテムを処理しています。発信者が会話を開始し、聴覚障害者が電話で応答します。遅延は、最初のステップである「突然の」新しいメッセージでのみ発生します。そのための最初の 1 つ (アプリケーション、デバイス、システム ID?) が完了すると、他のものは非常に迅速に、ほぼ瞬時に処理されます。

于 2012-12-13T12:21:57.000 に答える