React-native Geolocation。等待用户的回复请求

时间:2018-02-17 02:48:42

标签: react-native

仅限iOS问题:

我使用以下代码获取用户位置。

navigator.geolocation.getCurrentPosition(
(position) => {
  console.log("Native GEO GOOD", position);
  return resolve(position)
},
(err) => {
  console.log("Native GEO BADD", err);
  return reject(err)
},
{ enableHighAccuracy: false, timeout: 5000, maximumAge: 0 },

上面的代码打开一个对话框,用户可以从中允许我的应用程序进行地理定位。

问题是我想等到用户在调用错误或成功回调之前使用对话框实际响应。

我尝试使用:requestAuthorization()。但是,这只是打开对话框,我无法告诉用户何时接受了地理定位请求。

我想要做的是询问用户地理定位的权限,然后在用户接受后,尝试对用户进行地理定位。

但我不知道如何使用react-native geolocation做到这一点。

如果requestAuthorization()在用户响应对话框时采用了回调选项,那么这将解决我的问题。

1 个答案:

答案 0 :(得分:4)

在使用Expo(https://expo.io)的React-Native中,您使用Promise请求权限,然后根据承诺行事(希望在获得许可时)。

Permissions.askAsync((Permissions.LOCATION)
  .then(({status}) => {
  //your code here after permission is granted
   });
 );

如果您没有使用expo,那么有一个组件调用react-native-permissions(https://github.com/yonahforst/react-native-permissions.git),它允许您使用像我的示例但没有expo的承诺来请求权限。他们的示例显示了请求设置状态,以告知您可以执行的权限状态。

Permissions.request('location', { type: 'always' }).then(response => {
    this.setState({ locationPermission: response })
    })