小编Ahm*_*ah.的帖子

Flutter - 如何在后台实时、定期向后端发送位置更新。(Android 和 IOS 均适用)

我想定期在后台实时向我们的后端服务发送用户的位置更新(即使应用程序未运行/终止)。

目前,我们正在通过应用程序和后端之间的网络套接字发送位置更新。

问题是网络套接字在以下情况下断开连接(应用程序终止、电池优化或应用程序在后台且操作系统需要更多内存)。

如何保持网络套接字连接(也许每天 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)

geolocation background-process websocket dart flutter

8
推荐指数
0
解决办法
1677
查看次数