2016-11-21 6 views
2

Я являюсь автором приложения для Android, которое использует AlarmManager для отправки уведомлений пользователям. Мое приложение должно отправлять уведомления в точное время.Каким должен быть подход для надежного приложения с помощью AlarmManager?

Первое препятствие появилось, когда Google представил режим Doze. Фортунально, для этого был изменен метод до setExactAndAllowWhileIdle(). Это было хорошо на некоторое время. Однако с 2 месяцев число DAU сильно сокращается. И многие пользователи присылают мне сообщения о том, что уведомления не работают на их телефонах.

После некоторого расследования я знаю, что есть Smart Manager в Samsung, защищенные приложения на Huawei и многие другие системы от разных производителей, которые предотвращают нормальное поведение класса AlarmManager.

Итак, вот мой вопрос: как вам удалось решить эту проблему и позволить вашим пользователям на любом устройстве наслаждаться вашим рабочим приложением?

ответ

0

С выпуском Lollipop Android представил API под названием JobScheduler, чтобы запланировать задачу надежным способом. Вы можете использовать JobScheduler API, чтобы запланировать ваш Notifcation пользователям безопасным способом.

Ознакомьтесь со следующими ссылками, чтобы узнать больше об JobScheduler API и использовать его в своем приложении.

Docs: Job Scheduler Android Doc

Пример использования JobScheduler: JobScheduler Google Sample Code

+0

[. Doze ограничения ... Система не позволяет JobScheduler запускать] (https://developer.android.com/training/monitoring -device-state/doze-standby.html) –

+0

Согласно ссылке JaredRummler, JobScheduler не будет работать в режиме «Дозировка». Но, как я писал в своей первой теме, у меня нет проблем с чистым режимом Doz с AlarmManager. Использование 'setExactAndAllowWhileIdle()' делает работу. Моя проблема заключается в том, что производители внедряют свои собственные механизмы оптимизации батареи, которые предотвращают правильную работу приложений, которые полагаются на точное уведомление через AlarmManager. Что такое известное решение с точки зрения разработчика? – Perry

+0

@ Perry Я не уверен в твердом решении для этого. Но я думаю, что вы должны проверить его, по крайней мере, у популярных поставщиков –