反应原生地理定位。等待用户对请求的响应

Dav*_*far 5 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 },
Run Code Online (Sandbox Code Playgroud)

)

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

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

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

我想做的是请求用户允许进行地理定位,然后在用户接受后,尝试对用户进行地理定位。

但我不知道如何使用本机地理定位来做到这一点。

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

小智 5

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

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

如果您不使用 expo,则有一个组件调用 react-native-permissions ( https://github.com/yonahforst/react-native-permissions.git ) 允许您使用像我的示例一样的承诺来请求权限,但是没有世博会。他们的示例显示了请求设置状态,让您知道您可以采取行动的权限状态。

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


归档时间:

查看次数:

4388 次

最近记录:

7 年,9 月 前