当应用程序被杀死时是否可以跟踪用户的位置(Flutter)

问题描述 投票:0回答:1

我试图在应用程序被终止时跟踪用户的位置,并将该位置(纬度和经度)发送到 Flutter 中的数据库(Firestore)。

我是新手,所以我不知道该怎么做。如果有人能在这方面帮助我,我将不胜感激。

非常感谢!!

android flutter dart plugins location
1个回答
0
投票

应用程序在后台运行时可以获取设备的位置数据。您提到,即使应用程序被杀死,您也希望实现这一目标 - 通过“杀死”,如果您的意思是在 Android 中强制停止后获取位置数据,那么这是不可能的。

如果您想在应用程序在后台运行时获取用户数据,您可以使用 geolocator 插件。尽管这样做会涉及隐私,并且您需要请求用户的许可。权限请求内置于

geolocator
插件中。

LocationPermission permission;

permission = await Geolocator.checkPermission();

此后,您可以收听流并使用您想要存储位置数据的方式更新代码片段。

import 'package:geolocator/geolocator.dart';

final LocationSettings locationSettings = LocationSettings(accuracy: LocationAccuracy.best);

StreamSubscription<Position> positionStream = Geolocator.getPositionStream(locationSettings: locationSettings).listen(
    (Position? position) {
    print(position == null ? 'Unknown' : '${position.latitude.toString()}, ${position.longitude.toString()}');
    // Store geolocation data
});

要在后台运行任务,即使应用程序未在前台运行,您也可以使用 workmanager

创建一个用于运行任务的Workmanager,并在Flutter项目的

main.dart
上初始化它。

void locationHandler() {
  Workmanager().executeTask((_) {
    print('background task running'); 
    
    // Fetch device location data
  });
}

void main() {
  Workmanager().initialize(
    locationHandler, // The top level function, aka callbackDispatcher
    isInDebugMode: true // If enabled it will post a notification whenever the task is running. Handy for debugging tasks
  );
  Workmanager().registerOneOffTask('yourTaskName', 'yourTaskNameDescription);
  runApp(MyApp());
}
© www.soinside.com 2019 - 2024. All rights reserved.