Почему не приходят PUSH-уведомления в VoIP-клиенте 3CX для Android

Возможно, вы уже попробовали наше новое приложение 3CX для Android Beta. Сейчас мы активно работаем над релизом, который будет включать, кроме прочего, поддержку видеосвязи! Если вы еще не видели новый клиент 3CX, вступайте в группу бета-тестировщиков!

Однако мы обратили внимание на довольно распространенную проблему — нестабильную работу PUSH-уведомлений о вызовах и сообщениях. Типичный негативный отзыв в Google Play: если приложение в данный момент неактивно — вызовы не принимаются.

1043765dcde4ec866412a0a2c911edc6.png

Мы относимся к таким отзывам предельно внимательно. В целом, инфраструктура Google Firebase, которую использует Google для уведомлений, работает очень надежно. Поэтому стоит разделить проблему с PUSH на несколько уровней — точек, в которых она может возникать:

  1. Редкие проблемы сервиса Google Firebase. Проверить статус сервиса можно здесь.
  2. Явные ошибки в нашем приложении — оставляйте отзывы в Google Play.
  3. Проблемы с настройкой телефона — у вас могут быть сделаны определенные настройки или установлены приложения — оптимизаторы, мешающие работе PUSH.
  4. Особенности данной сборки Android на данной модели телефона. В отличие от Apple, разработчики устройств Android кастомизируют систему, добавляя в нее различные «улучшения», которые, по умолчанию или вообще всегда, блокируют работу PUSH.


В этой статье мы дадим рекомендации, касающихся повышения надежности PUSH как раз в двух последних пунктах.

Проблемы с подключением к серверам Firebase


Часто наблюдается ситуация, при которой АТС успешно подключена к инфраструктуре Firebase, но PUSH не приходит на устройство. В этом случае проверьте, коснулась ли проблема только приложения 3CX или других приложений тоже.

Если PUSH не приходит и в другие приложения, попробуйте включить и выключить «режим полета», перезапустить Wi-Fi и «мобильные данные» или даже перезагрузить телефон. При этом очищается сетевой стек Android, и проблема может быть решена. Если затронуто только приложение 3CX, попробуйте его удалить и переустановить.

48d34af7d0a252684d842c8689920ce9.png

Утилиты энергосбережения от производителя телефона


Несмотря на то, что Android имеет встроенные средства энергосбережения, производители смартфонов добавляют собственные «улучшения». Действительно, некоторые из них продлевают срок работы устройства, но при этом могут влиять на работу фоновых приложений. Мы рекомендуем найти и отключить все сторонние средства энергосбережения.

Однако тут следует быть осторожным. Часто вендоры создают собственные средства энергосбережения для того, чтобы предотвратить слишком сильный разогрев телефона. Иногда таким способом пытаются обойти несовершенства аппаратной части, но, если телефон загорится, это уже не будет иметь значения. Поэтому отключив «улучшенные» функции энергосбережения, протестируйте устройство под нагрузкой. И, разумеется, используйте качественные зарядные устройства и брендовые USB-кабели.

Ограничения на фоновую передачу данных


Фоновая передача данных используется многими сервисами и приложениями Android. Типичный пример — автоматическое обновление установленных приложений. Если у пользователя установлены ограничения на объем передаваемых данных, сервис Android Background Data Restriction просто блокирует фоновый обмен приложений, включая PUSH-уведомления.

Обязательно исключите клиент 3CX из подобных ограничений. Перейдите в раздел Настройки > Приложения и уведомления > О приложении > 3CX > Передача данных и включите Фоновый режим.

5056fb94c15ab374469e226bf622e49a.png

Функция экономии данных


Функция экономии данных не используется при подключении к Wi-Fi, но «режет» передачу при работе в мобильных сетях 3G/4G. Если вы планируете использовать клиент 3CX, экономию следует отключить в разделе Настройки > Сеть и интернет > Мобильные данные > верхнее правое меню > Экономия данных.

28aeed604c45acf669b0a077e91c8c68.png

Если экономить данные все-таки необходимо, нажмите Неограниченный доступ к данным и включите его для 3CX (cм. предыдущий скриншот) 

Интеллектуальное энергосбережение Android Doze Mode


Начиная с версии Android 6.0 (API level 23) Marshmallow, Google реализовала интеллектуальное энергосбережение, которое активизируется, когда устройство не используется некоторое время —  остается неподвижным с погашенным дисплеем и без подключенного зарядного устройства. При этом работа приложений приостанавливается, передача данных минимизируется, процессор переходит в энергосберегающий режим. В Doze Mode не выполняются сетевые запросы, кроме PUSH-уведомлений с высоким приоритетом. Требования Doze Mode постоянно ужесточаются — в новых версиях Android могут блокироваться операции синхронизации, различные уведомления, сканирование сетей Wi-Fi, работа GPS…

Несмотря на то, что 3CX отсылает PUSH-уведомления с высоким приоритетом, Android конкретной сборки может их игнорировать. Выглядит это таким образом: вы берете телефон со стола, экран включается — и приходит (отложенное энергосбережением Doze Mode) уведомление о входящем вызове. Отвечаете —, а там тишина, вызов уже давно пропущен. Проблема усугубляется тем, что некоторые устройства не успевают выходить из Doze Mode либо некорректно его отрабатывают.

Чтобы проверить, создает ли проблему Doze Mode, подключите телефон к зарядке, положите на стол и подождите несколько секунд, когда он начнет заряжаться. Позвоните на него — если PUSH и звонок проходят, значит дело в Doze Mode. Как было сказано, при подключении к зарядке Doze Mode не активируется. В то же время, если просто переместить автономный телефон или включить его экран — полный выход из Doze не гарантируется.

Итак, если проблема в Doze, попробуйте убрать приложение 3CX из режима оптимизации батареи в разделе Настройки > Приложения и уведомления > О приложении > 3CX > Аккумулятор > Исключения из режима энергосбережения.

b9651ba49be6271c4a53f8a1f984d0df.png

Попробуйте наши рекомендации. Если и они не помогли, установите 3CX для Android на другом телефоне и проверьте стабильность работы. Это поможет точно определить — дело в конкретном устройстве или в сети, где вы его используете. Также рекомендуем установить все доступные обновления Android.

Если ничего не помогло, подробно опишите проблему, указав точную модель телефона и версию Android на нашем специализированном форуме.

И последняя рекомендация, которая может показаться очевидной. Чем выше класс телефона, чем известнее производитель, тем выше шансы на беспроблемную работу прямо «из коробки». По возможности, используйте устройства Google, Samsung, LG, OnePlus, Huawei и все устройства на Android One. В данной статье использованы скриншоты с телефона LG V30+ с Android 8.0.

© Habrahabr.ru