10

優先度パラメーターを高く設定して、1 つのトピックにサブスクライブしている少数のデバイス グループ (5 未満) にプッシュ メッセージを送信しています。

優先度高。FCM は、優先度の高いメッセージをすぐに配信しようとします。これにより、FCM サービスは可能な場合にスリープ状態のデバイスを復帰させ、アプリ サーバーへのネットワーク接続を開くことができます。たとえば、インスタント メッセージング、チャット、または音声通話アラートを備えたアプリは、通常、ネットワーク接続を開き、FCM がデバイスにメッセージを遅滞なく配信することを確認する必要があります。メッセージがタイムクリティカルで、ユーザーの即時の操作が必要な場合にのみ、優先度を高く設定します。ただし、メッセージの優先度を高く設定すると、通常の優先度のメッセージよりもバッテリーの消耗が大きくなることに注意してください。

しかし、デバイスを IDLE 状態にすると、大きな遅延が発生します。Nougat 7.1 では、遅延は 10 分以上です。このタイプのプッシュには、10 秒未満の遅延が必要です。

0 に設定time_to_liveすると、Marshmallow でのみ問題が解決します。ヌガーはまだ失敗しています。

したがって、問題の考えられる原因は3つしかありません

  1. トピックに送信されたメッセージの優先度を高くすることはできません。ただし、各デバイスに個別のメッセージを送信すると、アプリ サーバーの負荷が増加します。Firebase データベースから新しいトークンをロードする必要があるため、結果は - 1 ではなく 5 ユーザーに対して 10 の http リクエストになります。

  2. アプリはホワイトリストに登録されている必要があります。しかし、ドキュメントによると、FCM を使用している場合は受け入れられません。そして、バッテリーの消耗を引き起こすので、私はそれを望んでいません。

  3. バグ?https://github.com/firebase/quickstart-android/issues/100

本当の原因が最初にある場合、なぜそれがドキュメントに記載されていないのですか?

4

2 に答える 2

3

0 に設定することで問題が解決しましtime_to_liveた。ドキュメントによると、このセットの優先度は「今か決して」に設定されていません

メッセージの存続期間を指定するもう 1 つの利点は、FCM が time_to_live (TTL) 値が 0 秒のメッセージをスロットリングしないことです。つまり、FCM は、「すぐに」配信する必要があるメッセージに対してベスト エフォートを保証します。time_to_live の値が 0 の場合、すぐに配信できないメッセージは破棄されることに注意してください。ただし、このようなメッセージは保存されないため、通知メッセージを送信するための最適な待機時間が提供されます。

UPD: マシュマロのみで解決。ヌガーについてはまだ問題があります。

UPD2: トピックを使用しないでください。トピックはプッシュを遅滞なく送信するためのものではありません。

于 2016-11-15T10:04:00.853 に答える