Уведомления FCM не принимаются в Android Oreo, когда батарея разряжена - PullRequest
0 голосов
/ 30 апреля 2018

В настоящее время я запускаю приложение для видеовызовов по событию, полученному с помощью сообщения FCM. Работает нормально. Но в Oreo , когда батарея разряжена Я не получаю никаких уведомлений FCM. Но WhatsApp работает даже в этом сценарии

Я отправляю следующий JSON:

{
    "to" : "XXXDecviceToken",
     "data" : {
         "callId" : "Call ID",
         "displayName" : "Abhilash", 
         "room" : "2000"
     }, 
     "time_to_live" : 0
}

1 Ответ

0 голосов
/ 30 апреля 2018

Просмотр вашего запроса JSON:

{
    "to" : "XXXDecviceToken",
     "data" : {
         "callId" : "Call ID",
         "displayName" : "Abhilash", 
         "room" : "2000"
     }, 
     "time_to_live" : 0
}

Существуют две проблемы, которые могут помешать доставке вашего уведомления при низком заряде батареи:

  1. Вы не указываете приоритет, поэтому для сообщений данных приоритет по умолчанию - "нормальный":

По умолчанию , уведомления отправляются с высоким приоритетом, а сообщения данных отправляются с нормальный приоритет . Обычный приоритет оптимизирует потребление батареи клиентским приложением и должен использоваться, если не требуется немедленная доставка. Для сообщений с обычным приоритетом приложение может получить сообщение с неопределенной задержкой .

  1. Вы указываете "time_to_live", равное 0, что означает, что если FCM не сможет доставить сообщение немедленно, оно никогда не будет доставлено (поскольку оно не хранится в хранилище FCM).

Таким образом, объединение «обычного» приоритета с «time_to_live», равным 0, может предотвратить доставку сообщения при низком заряде батареи.

Чтобы попытаться преодолеть эту проблему, вы можете установить приоритет «высокий»:

{
    "to" : "XXXDecviceToken",
     "data" : {
         "callId" : "Call ID",
         "displayName" : "Abhilash", 
         "room" : "2000"
     }, 
     "time_to_live" : 0,
     "priority" : "high"
}

или измените «time_to_live» на положительное значение (по крайней мере, достаточно времени, чтобы дать сообщение возможность доставки после перезарядки батареи).

...