Уведомления: что можно в браузере, а что только в приложении. Про календарь Упосатхи и про гонги в /memo.
Что умеют браузерные уведомления
Notification показывает уведомление, пока жива страница. Процесс он не держит.
- Таймеры в фоновой вкладке замедляются: минимум раз в секунду, после нескольких минут Chrome доводит до раза в минуту. На телефоне фоновая вкладка замораживается: таймеры и звук встают. Закрытая страница ничего не покажет.
- Способы разбудить закрытую страницу: Web Push (нужен сервер, который хранит подписки и место пользователя), Periodic Background Sync (только установленный PWA на Chromium Android, интервал не гарантирован), Notification Triggers (планирование без сервера, в браузерах не выпущено). Хранение подписок у нас решили не делать.
/memo: гонги
Сейчас там общий Audio (gong.mp3 и другие) и Wake Lock (экран не гаснет). Уведомление звук гонга не заменит: свой звук в веб-уведомлении задать нельзя, играет системный. Держать процесс уведомления тоже не будут. Вывод: для гонгов браузерные уведомления почти бесполезны, максимум визуальный дубль на десктопе, пока вкладка в фоне. Надёжно это делают только локальные уведомления приложения со своим звуком.
Что уже сделано в вебе (/uposatha-calendar)
- напоминания: за 1 час – 2 суток (по умолчанию за сутки) до 8-го и 14-го дня; напоминание за 14-й говорит, что будут две упосатхи; за 15-й отдельного нет
- работают, пока страница открыта или приложение в фоне; что наступило за время отсутствия, показывается при возвращении
- файл календаря
.ics с будильниками: единственный способ напомнить при полностью закрытом браузере без сервера
- в приложении страница сама зовёт
Capacitor.Plugins.LocalNotifications (идентификаторы 7000–7059, не больше 60 из-за лимита iOS в 64), без плагина ничего не делает; проверено только на заглушке плагина
Приложение (dg-app-full), НЕ начато
@capacitor/local-notifications; Android 13+: разрешение POST_NOTIFICATIONS, для точного времени SCHEDULE_EXACT_ALARM; iOS: разрешение при первом запросе
- страницу
/uposatha-calendar и zone-coords.js нужно включить в офлайн-бандл приложения, иначе она откроется только с сетью
- для
/memo: гонг локальным уведомлением со своим звуком (канал Android, файл в бандле iOS), таймер тогда не зависит от того, что сделала система с вкладкой
- открытый вопрос: сколько вперёд планировать (сейчас 60 уведомлений, около 15 месяцев) и когда пересчитывать расписание (при каждом открытии, при смене места или пояса)
Уведомления: что можно в браузере, а что только в приложении. Про календарь Упосатхи и про гонги в
/memo.Что умеют браузерные уведомления
Notificationпоказывает уведомление, пока жива страница. Процесс он не держит./memo: гонгиСейчас там общий
Audio(gong.mp3и другие) иWake Lock(экран не гаснет). Уведомление звук гонга не заменит: свой звук в веб-уведомлении задать нельзя, играет системный. Держать процесс уведомления тоже не будут. Вывод: для гонгов браузерные уведомления почти бесполезны, максимум визуальный дубль на десктопе, пока вкладка в фоне. Надёжно это делают только локальные уведомления приложения со своим звуком.Что уже сделано в вебе (
/uposatha-calendar).icsс будильниками: единственный способ напомнить при полностью закрытом браузере без сервераCapacitor.Plugins.LocalNotifications(идентификаторы 7000–7059, не больше 60 из-за лимита iOS в 64), без плагина ничего не делает; проверено только на заглушке плагинаПриложение (
dg-app-full), НЕ начато@capacitor/local-notifications; Android 13+: разрешениеPOST_NOTIFICATIONS, для точного времениSCHEDULE_EXACT_ALARM; iOS: разрешение при первом запросе/uposatha-calendarиzone-coords.jsнужно включить в офлайн-бандл приложения, иначе она откроется только с сетью/memo: гонг локальным уведомлением со своим звуком (канал Android, файл в бандле iOS), таймер тогда не зависит от того, что сделала система с вкладкой