авторизации в приложении запустить в бг сервис, который подключится к каналу по websocket и будет его слушать
при получении сообщения по ws надо:
- если приложение в форграунде, то просто передать ему данные из ws сообщения
- если приложение свёрнуто или terminated, то выполнить вибрацию и воспроизвести звук (либо можно просто пуш создать)
нашел пакет workmanager, но там метод executeTask, насколько я понял, обязан завершиться и вернуть Future<bool>
соответственно, не пойму как запустить там ws подключение и слушать его продолжительно
также, не совсем уверен, как в изоляте узнать в каком состоянии сейчас само приложение
прошу направить на верный след)
p.s.
приложение только под android
публиковаться не будет, это сервисное приложение, просто .apk будет ставиться на устройства заказчика
постоянно делать что-то в фоне мобильные оси не дают. Либо слать пуши вместо фонового вебсокета (самый правильный вариант), либо смотреть в сторону foreground service на андроиде (раньше такое было, но потом они что-то там меняли, так что не уверен, в каком сейчас это состоянии)
понял, спасибо большое) ну, с пушами даже проще реализация будет
я бы не верил на слово, что такое сделать нельзя если заказчик ставит срок в день то да нельзя. если фича стоит того то нужно ресерчить вот статья по актуальному состоянию https://developer.android.com/guide/background там предлагают WorkManager (почему каждый раз нужно придумывать новые сущности...) а вот есть одноименный пакет https://pub.dev/packages/workmanager
в гитхабе этого пакета есть issue, где как раз задавался вопрос "можно ли там крутить вебсокет" ответ - "нет" к тому же срок реализации 9 сентября так что уже сижу делаю через пуши
Таки лучше обрабатывай пуш дату и программно определяй что с ней делать, типа есть активити прилы запущенное данные туда передаешь и интент какой нить, нет активити - сохраняешь данные в бд и уведомление отображаешь, или данные вшиваешь в пуш уведомление, что бы по клику передать в прилу, но это не работает для онлайн чатов
Я так понял workmanager создаёт экземпляр виртуальной машины Дарта если его ещё нет. При обычном старте можно задать значение глобальной переменной. В случае если старт будет "холодным" то значение в переменной должно быть по умолчанию. Повесить туда ничего нельзя потому что после выполнения работы виртуальная машина убивается. Можно задачу выполнять максимально долго.
есть сущность андроидная называемая WorkManager - она не знает про существование дарта есть одноименная либа для флаттера и потенциально она могла бы запустить новую виртуалку в бекграунде (скоре всего так) далее ты говоришь про переменную и тут я теряюсь в догадках о чём ты
Обсуждают сегодня