@Berinlax

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

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

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

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

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

Выглядит очень костыльно и велосипедно, оттого и сомнения в правильности моих действий.
  • Вопрос задан
  • 75 просмотров
Пригласить эксперта
Ответы на вопрос 2
402d
@402d
начинал с бейсика на УКНЦ в 1988
Задача, которую Вы хотите решить (периодический опрос сервера из фона) не совпадает с тем, как гугл видит
свою операционную систему. Во первых, противоречит их установке "Батарея должна жить долго". Во вторых, не раздражайте пользователей лишними напоминаниями. А главное они считают, что для этой задачи нужно использовать GCM(FCM) - Google/Firebase Cloud Messages (платный при превышении лимитов).
Ответ написан
@AlexVWill
Berinlax,
особенно если он не имеет учетной записи Google
FireBase всеравно как вы его идентифицируете, ему важен ID устройства, точнее FB токен в системе, который уникален для каждой установленной копии приложения, он меняется даже при его переустановке. Т.е. приложение должно его как то получить, а далее средствами FB вы отправляете сообщение указывая этот самый токен, и устройство его получает, система обрабатывает и показывает в нотификайшн, а приложение при этом может его обработать (нужен для этого BroadcastReciever, но можно и вручную). А как привязать конкретного пользователя к токену - тут уже ваше дело, FB предлагает всякие разные варианты от учетки гугля до регистрации по email или SMS.
https://firebase.google.com/docs/auth/web/password-auth
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы