web-dev-qa-db-ja.com

Android Firebase Cloud Messagingで送信されたプッシュの5%を受信して​​いないデバイス

下のFirebase Cloud Messaging(FCM)コンソールのグラフは、プッシュの95%しか電話で受信されていないことを示しています。これは、VoIPアプリを作成していて、プッシュをすぐに受信する必要があるため、多くの問題を引き起こしています。なぜこれが起こっているのか、そしてこの率を100%に近づける方法を誰かが説明できますか?

いくつかの重要な注意事項:

  • すべての電話はAndroidです
  • すべての電話で、プッシュを受信したとき、または最大2分前にアプリが開いていました
  • すべてのプッシュは、優先度が高いデータプッシュ(本文/タイトルなし)です
  • プッシュは、Android docsに従って、優先順位を付けるために有効期限10秒で送信されます
  • 同じ期間にプッシュを送信する〜30のエラー(登録トークンが未登録で内部エラー)がありました。これは、約500の未配信のプッシュと比較すると何もありません。

Screenshot from FCM Console

5
pir

通知が配信されない原因はいくつかあります。

  • 通知の表示を停止する特定のバッテリー最適化を備えている可能性のあるデバイスがあります。そしてそれを修正するには、ユーザーに次のことを依頼するかもしれません。小切手 SettingsBatteryBattery Optimization or Adaptive Battery >アプリを見つけて押します Don't optimize

  • アプリのプッシュ権限が無効になっている可能性がありますデバイス設定で、ユーザーはonおよびoffプッシュ通知をオンにできます。下の通知設定から SettingsApps

1
Ibrahim Ali
  • プッシュを受信したとき、または最大2分前に、すべての電話でアプリが開いていました

すべての電話がオンになっていて、スリープモードになっていないことをどうやって知っていますか?あなたは100%確信していますか?

  • すべてのプッシュは、優先度が高いデータプッシュ(つまり、本文/タイトルなし)です。プッシュは、次のAndroid docsに従って優先順位を付ける有効期限10秒で送信されます

また、データFCMを使用してデバイス間の更新を調整します。私の場合、メッセージの大部分は1/2秒未満で受信されますが、最大で約20秒遅れて、いくつかのメッセージが突然受信される場合があります。

あなたの場合、たった10秒のTimeToLiveで、それらは失われるでしょう。

また、Googleによると、メッセージの95%は250ミリ秒未満で配信されますが、残りの5%は配信されないため、これらの損失はすでに正当化されています。

1
Lluis Felisart