为了简化我的问题:我有一个电子商务应用程序,它使用地理围栏来检测何时准备订单:
BackgroundGeolocation.onGeofence(geofence => {
this.props.prepareOrder();
});
问题是,prepareOrder()向我的服务器发出HTTP请求。 我注意到,在我的应用程序被预见之前,它实际上并没有提出请求。
有没有解决的办法? 当他们进入地理围栏并且我需要提出请求时,我的应用很可能是背景的。
======
更复杂的版本在这里: https : //github.com/redux-saga/redux-saga/issues/816 。 我正在使用redux-sagas,似乎并没有yield call
。 但是我不确定它是否是一个redux-saga的东西或者在后台发出HTTP请求的东西。
同样在这里......这不是一个redux-saga问题,它是ReactNative应用程序在后台工作的一个更普遍的问题:当应用程序在后台运行很长时间时,JS线程似乎被冻结(特别是在iOS关闭屏幕时)
iOS和android之间的行为不同,也取决于操作系统版本。 尽管如此,我们正在构建一个需要在前景和背景中保持恒定地理位置的应用程序,我们尝试使用sagas并且我们看到它不起作用:我们将在一段时间后停止接收位置。 看着我们的日志,我们会看到我们所有的ReactNative日志也会停止。 因此我们疯狂地猜测“由于能源原因,操作系统可能会停止所有ReactNative环境
所以我们将背景代码移动到本机代码:
有用!