4

サーバーで発生した重要なイベントをアプリケーションのユーザーに通知できないか研究していました。そこで、Google-Cloud-Messaging でプッシュ通知を実装してみました。残念ながら、正確な遅延配信時間はなく、メッセージが遅れて配信されていることがわかります。gmail でメールを送信してみましたが、gmail 自体のプッシュ通知は時間制限なしで遅れて届きました。そのため、google-cloud-messaging サービスを使用して重要なイベントをユーザーに配信できないことがわかりました。ユーザーに重要なイベントを通知する代替手段はありますか?

注: SMS は使いたくありません。また、バッテリーの寿命を消費するため、アプリケーションからもプルしたくありません。

事前にご協力いただきありがとうございます。

4

4 に答える 4

2

実は、サーバーで 5228、5229、5230 ポートがブロックされていたことが原因でした。そのため、ネットワーク管理者がブロックを解除する必要があります。同様に、Facebook アプリ、Gmail などの他のシンクがアクティブで、サーバー管理者によってブロックされていると言う場合、同期は成功せず、後でアプリを同期するときに時間がかかります。

于 2013-03-08T23:29:06.797 に答える
1

他の問題が原因である可能性があります。または、送信サーバーの地理的な場所と受信者のIPアドレスが原因である可能性があります。

于 2013-01-29T06:58:10.523 に答える
1

これは、Google Cloud Messagingの非現実的なハートビート間隔が原因である可能性があります。

GCM は、Android デバイスから Google のサーバーへのアイドル ソケット接続を維持することで機能します。これは、(ポーリングとは対照的に) バッテリー電力をほとんど消費せず、メッセージが到着するとすぐにデバイスを起動できるため、優れています。

接続がアクティブなままであることを確認するために、Android はモバイル接続では 28 分ごと、WiFi では 15 分ごとにハートビートを送信します。ハートビートが失敗した場合、接続は終了しており、GCM は接続を再確立し、保留中のプッシュ通知を取得しようとします。ハートビート間隔が長いほど、バッテリーの消費が少なくなり、デバイスがスリープから復帰する回数が少なくなります。

ただし、これには大きな代償が伴います。ハートビート間隔が長くなるほど、切断されたソケット接続を特定するのに時間がかかります。Google は、GCM をデプロイする前に、実際の状況でこれらの間隔を十分にテストしていません。これらの間隔の問題は、ネットワーク ルーターとモバイル キャリアが原因で発生します。これらは、アイドル状態のソケット接続が数分間非アクティブになると切断されます。

詳細については、私のブログをご覧ください。

http://eladnava.com/google-cloud-messaging-extremely-unreliable/

回避策として、通知速度と信頼性を大幅に向上させる GCM/FCM のドロップイン代替品であるPushy ( https://pushy.me ) を検討してください (完全開示 - 私は Pushy を設立しました)。

于 2016-12-29T09:57:31.813 に答える
1

GCM は、できるだけ早くメッセージをユーザーにプッシュするために使用するものです。いつ配信する必要があるかをメッセージで指定できます。バッテリーを節約するために delay_while_idle フラグを使用している gmail である可能性があります。私の経験では、GCM は非常に高速です。非常に短い期間に同じデバイスに多くの更新をプッシュしている場合にのみ、スロットリングが発生するはずです。

https://developer.android.com/google/gcm/adv.html

于 2013-02-18T13:54:31.463 に答える