KIPRIassistant

Почему Android задерживает напоминания и как вернуть точное время

Почему уведомления на Android приходят с опозданием, что изменилось с Android 12 и какие разрешения нужны, чтобы напоминание срабатывало секунда в секунду.


Знакомая история: поставили напоминание на 10:00, а телефон звякнул в 10:07. Дело обычно не в приложении и не в “глючном телефоне”. Дело в том, как Android с двенадцатой версии обращается с будильниками.

Что изменилось в Android 12

Раньше приложение могло попросить систему разбудить его в точный момент, и система это делала. Дальше выяснилось очевидное: если так делают сорок приложений, телефон просыпается сорок раз за час и садится к обеду. Поэтому появилось разделение.

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

10:0010:0510:1010:1510:20неточный: где-то здесьточный: ровно 10:00
Напоминание на 10:00. Точный будильник срабатывает в срок. Неточный система собирает в пачку с другими, и он приходит через минуту, а то и через пятнадцать.

Точный будильник срабатывает в указанную секунду, но требует отдельного разрешения. С Android 12 (API 31) это SCHEDULE_EXACT_ALARM, которое пользователь может отозвать в настройках. С Android 13 (API 33) появилось USE_EXACT_ALARM. Оно выдаётся при установке, но доступно только приложениям, у которых напоминания и будильники составляют основную функцию.

Как понять, что разрешения нет

Приложение об этом знает, а вот пользователь обычно нет. Симптом один: уведомления приходят примерно тогда, причём разброс плавает, то минута, то десять. Никакой ошибки при этом не показывается, система молча планирует событие как неточное.

Поэтому в KIPRI статус вынесен на экран настроек уведомлений отдельной строкой: “Точное время: включено” или предложение выдать разрешение. Приложение, которое обещает напомнить вовремя, обязано показывать, может ли оно выполнить это обещание.

Что ещё мешает уведомлениям

Разрешение на точные будильники необходимо, но одного его мало.

  • Оптимизация батареи. Многие оболочки, особенно Xiaomi, Huawei и Samsung в агрессивных режимах, усыпляют приложения, которыми давно не пользовались. Помогает исключение приложения из оптимизации.
  • Отключённые каналы уведомлений. В Android уведомления сгруппированы по каналам, и канал можно выключить отдельно от приложения целиком.
  • Режим “Не беспокоить”. Он гасит звук, но уведомление всё равно приходит. Стоит проверить, не в нём ли дело, прежде чем винить приложение.
  • Лимит запланированных уведомлений. На iOS их не может быть больше 64 одновременно, и приложения обходят это, планируя ближайшие события и дозаполняя очередь при запуске. KIPRI держит в системе примерно месяц вперёд и достраивает очередь на старте.

Практический вывод

Если напоминания приходят с опозданием, порядок проверки такой: разрешение на точные будильники, затем исключение из оптимизации батареи, затем каналы уведомлений. В девяти случаях из десяти дело в первом пункте, и лечится оно одним переключателем. Весь порядок под вашу марку телефона собран в проверке настроек.

А приложение со своей стороны обязано не молчать: показать статус, объяснить, что даст разрешение, и дать кнопку. Молчаливое опоздание разрушает доверие к напоминаниям быстрее любой другой ошибки, потому что напоминание, которому не веришь, бесполезно.

А если промолчало не напоминание приложения, а обычный будильник в «Часах», дело почти никогда не в разрешениях. Там свои ловушки: беззвучный режим без вибрации, исключения режима «Не беспокоить», отдельная громкость будильника. Они разобраны в статье о том, почему не сработал будильник.

Статья помогла?

Все записи

Забирайте Кипри себе

На бесплатном тарифе работает всё приложение целиком. Ограничения начинаются там, где начинается серьёзный объём.

Новости и промокоды выходят в Telegram-канале