移动技术:React native 使用Socket.io进行实时跟踪
我有出租车服务应用程序,在该应用程序中我不断将驾驶员的位置更新到服务器。当应用程序是前台时,它工作正常。现在,当应用程序在后台运行时,我想以任何其他方式使用套接字将驱动程序的位置更新到服务器。我需要适用于ios / android的解决方案。
请分享您的建议
答案 0 :(得分:1)
我不确定是否要使用套接字,但是可以尝试将数据保存在sqlite数据库中,然后在应用程序处于后台时使用react-native-background-task https://github.com/jamesisaac/react-native-background-task
像这样使用它:
BackgroundTask.define(() => {
//API CALL
BackgroundTask.finish()
})
componentDidMount() {
BackgroundTask.schedule();
}
请注意,在iOS上调用它需要ATLEAST 15分钟
答案 1 :(得分:0)
好的,这里没有这样的答案,更多地说明了您所处的状况。
我以前也处于相同的情况,在与“打ze模式”相同的场景中,您可以做一些事情来测试您的React Native应用程序。 Android引入了这种方法,以限制手机处于打ze模式时的CPU和电池使用量。如果电话静止不动和/或在设定的时间内未与用户进行任何交互,则进入打ze模式本身。
首先,使用当前的解决方案-您想在待机/打ze模式下测试您的应用。您可以通过执行以下操作来实现:
使用Doze测试应用
您可以按照以下步骤测试打ze模式:
https://developer.android.com/training/monitoring-device-state/doze-standby#testing_doze
配置具有Android 6.0(API级别23)或更高版本系统映像的硬件设备或虚拟设备。
通过运行以下命令强制系统进入空闲模式:
$ adb shell dumpsys deviceidle force-idle
准备就绪后,通过运行以下命令退出空闲模式:
$ adb shell dumpsys deviceidle unforce
$ adb shell dumpsys battery reset
这将为您提供测试方案,以便在Android上进行测试。
问题:
在后台,Android使应用程序对手机连接的控制越来越少。它将停止所有网络连接,仅在“维护窗口”中打开。 Android状态:
对网络访问的“打ze睡”限制也可能会影响您的应用程序,特别是如果该应用程序依赖实时消息(例如挠痒痒或通知)。如果您的应用需要与网络的持久连接才能接收消息,则应尽可能使用Firebase Cloud Messaging(FCM)。
问题:
问题不在后台运行您的应用,您的问题将在后台使用网络。例如,无头JS将运行-可运行的任务将运行,但它可能无法发出任何网络请求。
可能的解决方案:
使用警报
如果您需要设置在打ze睡时触发的警报,请使用setAndAllowWhileIdle()
或setExactAndAllowWhileIdle()
。
设置为setAlarmClock()
的警报继续正常触发-在这些警报触发之前,系统会立即退出Doze。
将您的应用放入白名单(请访问上面的链接以获取可接受的用例)。
iOS:
对于React Native,我使用了它:
https://github.com/mauron85/react-native-background-geolocation
这也适用于Android,但是“打mode”模式(在我的情况下)不会发送网络请求。