如何创建在应用程序关闭时也能正常工作的 Flutter 后台服务

How to create a Flutter background service that works also when app closed

我正在为大学的学术目的开发一个 Flutter 应用程序。现在,我需要 运行 一种 "always on" 后台服务才能使用蓝牙,最重要的是从外部 REST API 获取定期更新。

我已经检查了 pub.dev (this and this) without finding the perfect solution that works out-of-the-box (as expected...). I also saw something native with Kotlin (here) 中的那两个库。我想知道什么是实现我的目标的最佳选择(在最佳实践、完整性和简单性方面)。

查看下图以获得更多示意图:

Can I run Dart code in the background of an Flutter app?

Yes, you can run Dart code in a background process on both iOS and Android. For more information, see the Medium article Executing Dart in the Background with Flutter Plugins and Geofencing.

归功于Raouf Rahiche

对于这种事情,你必须依赖本机机制。

在 "always existent" 后台组件中处理 API 的最有效方法是实现推送通知服务。 使用这种技术,远程服务器能够开始与您的应用程序通信,唤醒它,然后执行任何需要执行的任务。

此外,在 Android 中,您有 foreground services 即使应用程序已关闭,它也会 运行。

我推荐使用 android_long_task 插件,它有很好的文档

如果你想 运行 使用 Android 前台服务执行一个较长的 运行ning 任务并开始监听你的任务的更新和进度 运行ning在该服务中。您也可以根据需要更新前台服务通知。

您可能想看看 flutter_background_service 包。它有助于在后台执行 Dart 代码。