【发布时间】:2024-01-24 05:02:01
【问题描述】:
我一直在尝试在 Flutter 中创建一个应用程序,即使应用程序被杀死,它也会将用户的位置数据发送到 Firestore 数据库。
这个插件可以很好地在应用被杀死时获取位置数据: https://github.com/rekab-app/background_locator
问题是我无法在此插件的“回调”函数中更新 Firestore 数据库值
这是我的代码:
static void callback(LocationDto locationDto) async {
print('location in dart: ${locationDto.toString()}');
final SendPort send = IsolateNameServer.lookupPortByName(_isolateName);
send?.send(locationDto);
await DatabaseService(uid:UID).updateUserLocation(
(locationDto.latitude).toString(),
(locationDto.longitude).toString());
}
DatabaseService.updateUserLocation 方法是:
Future updateUserLocation(String latitude,String longitude) async
{
return await location_collection.document(uid).setData({
'Longitude':longitude,
'Latitude':latitude
});
}
错误在于将 locationDto 发送到 FireStore 数据库 确切的错误是:
[ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: MissingPluginException(No implementation found for method DocumentReference#setData on channel plugins.flutter.io/cloud_firestore)
这与 updateUserLocation 方法中的 setData() 函数有关。
即使应用程序被杀死,如何将用户的位置数据发送到我的 Firestore 数据库?
如果有人可以帮助我,那就太好了!!!
谢谢!
【问题讨论】:
-
使用 Firebase Cloud Messaging 向您的应用发送推送通知。将启动您的应用以接收消息。
-
该应用程序适用于货车司机,因此当通知到达时他们可能无法打开该应用程序。您能否建议一种在应用程序被终止时将用户位置发送到 Firestore 的方法。谢谢!
-
@ManasBam 你找到解决办法了吗?
标签: firebase flutter google-cloud-firestore background-process flutter-dependencies