kgnk
@kgnk
Разрабатываю сайты, рисую интерфейсы

Как сделать фоновое подключение (Socket.io) в Андроид?

Реализовал сервис типа стики для фонового подключения по сокетам. Всё красиво, не считая того, что многие оптимизаторы режут его, а в оболочках MIUI стики вообще игнорируются, если пользователь не разрешил автозапуск и ещё кучу кнопок не нажал.

Если это хотя бы каким-то образом работает в версиях до орео, то в 26 вообще выбрасывает эксепшен. Как я понял, они их прикрыли для подобных вещей.

Вопрос, что делать? Как реализовать это фоновое подключение, если их лаунчеры хотят прибить, а с восьмого андроида и сама ОС.

Приложение типа мессенджера с ассиметричным шифрованием. Читал, что у гугловых сервисов доставки пуш уведомлений много проблем, да и это всю концепцию портит.

Конкретно интересует примерно такой паттерн: вышел с приложения, живёт ещё несколько минут, потом раз в некоторые промежутки времени (20 — 30 минут) подключается и выгружает новые сообщения. В идеале, конечно, соединение должно жить весь «активный» день пользователя.
  • Вопрос задан
  • 327 просмотров
Решения вопроса 1
thelongrunsmoke
@thelongrunsmoke
Программист
Чтобы держать сокет открытым нужно не давать устройству уснуть. Устройство быстро разряжается - пользователь негодует. Поэтому, вам придётся разрывать соединение регулярно. Подход стандартный, устройство будится, wakelock захватывается(обязательно с указанием периода), после чего можно делать свои дела. Надо помнить, что если вы не отпустили wakelock и система уснула по таймауту или таймаут был слишком большой, то дальше его могут и не дать.
Другой вариант, переписать взаимодействие с сервером на C. На исполнение нативного кода таких ограничений нет.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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