【发布时间】:2018-10-08 11:46:57
【问题描述】:
我是新来的原生反应。我想请求 Location 的实时权限。请帮助我如何在 react native 中获取实时权限。
【问题讨论】:
-
你在用expo吗?
-
不,我在真实设备上测试
标签: react-native react-native-android
我是新来的原生反应。我想请求 Location 的实时权限。请帮助我如何在 react native 中获取实时权限。
【问题讨论】:
标签: react-native react-native-android
看看这个库:react-native-permissions
【讨论】:
最好避免使用库进行权限检查
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
重要 - 在清单文件中包含上述代码行
import { PermissionsAndroid, Platform } from 'react-native';
componentDidMount() {
if (Platform.OS === 'android') {
this.requestLocationPermission(); // function call
}
}
code 下方包含 function 正文。
async requestLocationPermission() {
try {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION
);
if (granted === PermissionsAndroid.RESULTS.GRANTED || granted === true)
{
// WHAT TODO WHEN PERMISSION IS GRANTED
} else {
// WHAT TODO WHEN PERMISSION IS NOT GRANTED
}
} catch (err) {
log(err);
}
}
【讨论】:
如果您只需要访问位置,react-native-permissions 可能会过大。 React Native 似乎有自己的 API:RN geolocation
import {geolocation } from "react-native";
// ...
geolocation.requestAuthorization()
iOS 所需的权限取决于您的 plist 中有哪些键。对于android,我猜你无事可做
【讨论】:
小心地理位置现在贬值了。你最好使用 Amal 的解决方案。
import {geolocation } from "react-native";
【讨论】: