在 React Native 出错后重试地理定位
Posted
技术标签:
【中文标题】在 React Native 出错后重试地理定位【英文标题】:Retrying Geolocation after error in React Native 【发布时间】:2017-05-31 23:46:57 【问题描述】:我正在使用 React Native 的 Geolocation API 来获取用户的位置或要求用户打开位置:
// Handle Permissionsandroid
this.watchID = navigator.geolocation.watchPosition(
(position) =>
// Update position
,
(error) =>
switch (error.code)
Case 1:
// Ask user to turn on Location (Permission has already been asked for)
);
现在,如果用户稍后打开位置,我想重试 watchPosition。
使用 AppState,如果用户开始与通知栏交互(可能用户正在尝试打开位置),我尝试获取事件。但它只会在应用程序被发送到后台或再次激活时回调(但不是在通知栏交互期间)。
由于地理定位符合 W3 standards,因此我尝试在 Web 开发世界中寻找解决方案。但我found 的唯一解决方案是使用仅浏览器的 iFrame。
另外,一个不优雅的解决方案是 setInterval(比如每 5 秒),然后仅在返回位置时才 clearInterval。
有没有合适的方法来做到这一点?
【问题讨论】:
【参考方案1】:您应该首先获取当前位置来启动流程,然后创建手表。以下内容来自 Geolocation 文档。
navigator.geolocation.getCurrentPosition(
(position) =>
if (position)
//Handle first position
,
(error) => (console.log(error)),
enableHighAccuracy: true, timeout: 20000, maximumAge: 1000
);
this.watchID = navigator.geolocation.watchPosition((position) =>
if (position)
// Handle new position
);
我发现这可以从位置错误中恢复,以及处理权限请求(在 ios 10 上测试)。
【讨论】:
以上是关于在 React Native 出错后重试地理定位的主要内容,如果未能解决你的问题,请参考以下文章
使用 geolocation react-native 时出错
我无法在带有 redux 的 react-native 中使用地理定位
react-native-mauron85-background 地理定位错误
在 iPhone 7 上 React Native 地理定位标题始终为 -1
react-native 中的 navigator.geolocation.getCurrentPosition 是不是与本地地理定位方法一样准确?