我想定期在后台实时向我们的后端服务发送用户的位置更新(即使应用程序未运行/终止)。
目前,我们正在通过应用程序和后端之间的网络套接字发送位置更新。
问题是网络套接字在以下情况下断开连接(应用程序终止、电池优化或应用程序在后台且操作系统需要更多内存)。
如何保持网络套接字连接(也许每天 12 小时)?
在这种情况下,使用网络套接字是一种不好的做法吗?
实时发送位置更新的好替代方案是什么?(请记住,后端使用网络套接字将数据发送到应用程序(但不经常,我们可以使用推送通知代替)。)。
我正在使用geolocator包来获取用户的当前位置。并socket_io_client打包连接到网络套接字。
我们的目标是Android 和 IOS。
当前实施情况
// imports ...
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MyHomePage(
socket: Geolocator.getPositionStream(),
positionStream: IO.io(kHost, <String, dynamic>{ 'transports': ['websocket'] }),
),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({this.socket, this.positionStream});
final Stream<Position> positionStream;
final IO.Socket socket;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends …Run Code Online (Sandbox Code Playgroud)