@Berinlax

Как вывести уведомления в фоновом "WebView"-приложении?

Написала WebView-приложение простого мессенджера-чата (то есть сайт в обертке Android-приложения). Уведомления для пользователя вывожу через Javascript-Java-адаптер: то есть вывожу их в JS, который обращается к Java, который и выводит уведомление. Это удовлетворительно работает. Но столкнулась с проблемой неприходящих уведомлений о новых сообщениях для пользователя спустя некоторое время работы приложения в фоновом режиме.

Предположила, что дело в засыпании приложения или JS в webview-компоненте через неопределенное время его сворачивания (нажатия на устройстве кнопки "Home", например).

Нагуглила, что проверку новых сообщений пользователя нужно реализовывать через "ForegroundService": то есть в MainActivity (в котором есть компонент WebView) при запуске приложения необходимо запускать сервис (класс ForegroundService), который в фоновом режиме выполнял бы запросы на сервер каждую минуту и полученную информацию выводил в виде уведомления. Корректна ли такая практика?

Если рассуждения верные, то возникает вопрос: какой запрос мне необходимо передавать на сервер, чтобы он мог идентифицировать пользователя? Достаточно ли каждую минуту выполнять POST-запрос с "sessionid", формируемый Django, чтобы идентифицировать пользователя? Значение "sessionid" планирую получать из куки компонента webView. Безопасно ли это?

Выглядит очень костыльно и велосипедно, оттого и сомнения в правильности моих действий.
  • Вопрос задан
  • 129 просмотров
Пригласить эксперта
Ответы на вопрос 1
402d
@402d
начинал с бейсика на УКНЦ в 1988
Задача, которую Вы хотите решить (периодический опрос сервера из фона) не совпадает с тем, как гугл видит
свою операционную систему. Во первых, противоречит их установке "Батарея должна жить долго". Во вторых, не раздражайте пользователей лишними напоминаниями. А главное они считают, что для этой задачи нужно использовать GCM(FCM) - Google/Firebase Cloud Messages (платный при превышении лимитов).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы