firebase Flutter在应用处于后台或关闭时执行任务

ovfsdjhp  于 2023-08-07  发布在  Flutter
关注(0)|答案(2)|浏览(206)

我想创建一个检查用户当前位置的服务,如果距离超过100米,我会在Firestore数据库中更新用户的位置。我希望此服务在所有情况下都能运行:前台,后台,甚至当应用程序被杀死。请提出解决办法。
我是Flutter的新手,我希望你能帮助我实现这个功能。

osh3o9ms

osh3o9ms1#

您可以使用workmanager来完成此操作,它会安排在后台运行的任务,因此您可以定期检查用户的位置并将其发送到Firebase。
您可以直接在原生环境中使用(参考AndroidiOS)或使用像Flutter Workmanager这样的软件包,它可以为你做这件事,使用起来非常简单,请看下面的例子:
首先创建要运行的任务

Workmanager().registerPeriodicTask(
"periodic-task-identifier", 
"simplePeriodicTask", 
frequency: Duration(hours: 1)),

字符串
然后创建一个回调方法,该方法将在调用任务时在后台运行所需的代码。

@pragma('vm:entry-point')
void callbackDispatcher() {
  Workmanager().executeTask((task, inputData) {
    print("Native called background task: $backgroundTask");
    return Future.value(true);
  });
}


在回调方法中,您甚至可以按条件进行过滤,并对不同的任务进行不同的处理。如果你打算使用这个包,我建议你阅读原始文档和原始存储库中的使用示例。

kfgdxczn

kfgdxczn2#

您可以使用geolocator插件获取用户的位置。要使位置跟踪正常工作,请确保向用户请求必要的权限。您需要分别在Android和iOS的AndroidManifest.xml和Info.plist文件中添加所需的权限。
该插件还提供后台服务。

相关问题