Как создать фоновую службу Flutter, которая работает даже при закрытии приложения

Я разрабатываю приложение Flutter для академических целей в университете. Теперь мне нужно запустить своего рода "всегда активную" фоновую службу, чтобы использовать Bluetooth и, что наиболее важно, получать периодические обновления от внешних REST API.

Я уже проверил эти две библиотеки из pub.dev (this и this), но не нашел идеального решения, которое работает "из коробки" (как и ожидалось...). Еще я видел что-то родное с Kotlin ( здесь). Я хотел бы знать, какой вариант является наилучшим для достижения моих целей (с точки зрения передового опыта, полноты и простоты).

Взгляните на следующее изображение для более схематического представления:

4 ответа

Решение

Для этого нужно полагаться на собственные механизмы.

Самый эффективный способ работать с API в "всегда существующем" фоновом компоненте - это реализовать службу push-уведомлений. Используя такую ​​технологию, удаленный сервер может начать связь с вашим приложением, разбудить его, а затем выполнить любую задачу, которая должна быть выполнена.

Кроме того, в Android у вас есть службы переднего плана, которые будут работать, даже если приложение закрыто.

Возможно, вы захотите взглянуть на пакет flutter_background_service . Это помогает выполнять код Dart в фоновом режиме.

Могу ли я запустить код Dart в фоновом режиме приложения Flutter?

Да, вы можете запускать код Dart в фоновом режиме как на iOS, так и на Android. Для получения дополнительной информации см. Статью Medium Выполнение Dart в фоновом режиме с плагинами Flutter и Geofencing.

Кредит Рауфу Рахишу

Я рекомендую использовать плагин android_long_task с хорошей документацией.

если вы хотите запустить длительную задачу с помощью Android Foreground Service и начать прослушивать обновления и ход выполнения вашей задачи, выполняемой в этой службе. также вы можете обновить уведомление службы переднего плана, как хотите.

Другие вопросы по тегам