11

Google Cloud Messaging API を使用してバックエンド サーバーと Android/Chrome クライアントの間でメッセージを送信すると、バックエンド サーバーがレート制限を超えた応答コードを受信することがあります。このコードは、HTTP 接続サーバーの場合は「DeviceMessageRateExceeded」 、 クラウド接続サーバーの場合は「DEVICE_MESSAGE_RATE_EXCEEDED」です。

このエラー コードとは何ですか?また、どのように管理する必要がありますか?

4

2 に答える 2

12

レート制限の例外コードは、バックエンド サーバーからメッセージを頻繁に送信していることを示しています。安定したサービスを確保するために、バックエンド サーバーから送信できるメッセージの数には、1 分あたり / デバイス アプリあたりの上限があります。この制限は高く設定されているため、正常に動作しているほとんどのアプリは影響を受けませんが、すべてのアプリがこのエラー コードを受け取る準備ができている必要があります。

質問にあるとおり、HTTP接続サーバーの場合、エラーコードは「DeviceMessageRateExceeded」になります。Cloud Connection Serverの場合は、以前のエラー コード「QUOTA_EXCEEDED」を置き換える「DEVICE_MESSAGE_RATE_EXCEEDED」になります。

バックエンド サーバーがこのエラー コードを受信した場合、理想的には指数バックオフを実装して、クライアントにメッセージを送信する速度を遅くする必要があります。

于 2014-11-06T22:42:20.557 に答える
7

CCS ダウンストリーム ack はクォータに含まれません。

1 つのデバイスに送信するメッセージが多すぎると、DeviceMessageRateExceeded クォータに達します。すべての送信をバックオフする必要はなく、その登録 ID だけに送信します。「Canonical」登録 ID 応答を処理していることを確認してください。複数の regid が同じデバイスを指している可能性があります。

「quota_exceeded」は C2DM で使用されていました - GCM は現在それを返しません。誰かがまだ C2DM を使用している場合 - 処理は、すべてのメッセージの送信を抑制/バックオフすることです。または、このグローバル クォータを持たない GCM に移行することをお勧めします。

于 2015-01-20T22:00:01.477 に答える