我想创建一个检查用户当前位置的服务,如果距离超过100米,我会在Firestore数据库中更新用户的位置。我希望此服务在所有情况下都能运行:前台,后台,甚至当应用程序被杀死。请提出解决办法。我是Flutter的新手,我希望你能帮助我实现这个功能。
osh3o9ms1#
您可以使用workmanager来完成此操作,它会安排在后台运行的任务,因此您可以定期检查用户的位置并将其发送到Firebase。您可以直接在原生环境中使用(参考Android,iOS)或使用像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); }); }
型在回调方法中,您甚至可以按条件进行过滤,并对不同的任务进行不同的处理。如果你打算使用这个包,我建议你阅读原始文档和原始存储库中的使用示例。
kfgdxczn2#
您可以使用geolocator插件获取用户的位置。要使位置跟踪正常工作,请确保向用户请求必要的权限。您需要分别在Android和iOS的AndroidManifest.xml和Info.plist文件中添加所需的权限。该插件还提供后台服务。
2条答案
按热度按时间osh3o9ms1#
您可以使用workmanager来完成此操作,它会安排在后台运行的任务,因此您可以定期检查用户的位置并将其发送到Firebase。
您可以直接在原生环境中使用(参考Android,iOS)或使用像Flutter Workmanager这样的软件包,它可以为你做这件事,使用起来非常简单,请看下面的例子:
首先创建要运行的任务
字符串
然后创建一个回调方法,该方法将在调用任务时在后台运行所需的代码。
型
在回调方法中,您甚至可以按条件进行过滤,并对不同的任务进行不同的处理。如果你打算使用这个包,我建议你阅读原始文档和原始存储库中的使用示例。
kfgdxczn2#
您可以使用geolocator插件获取用户的位置。要使位置跟踪正常工作,请确保向用户请求必要的权限。您需要分别在Android和iOS的AndroidManifest.xml和Info.plist文件中添加所需的权限。
该插件还提供后台服务。