我正在使用react本地应用程序,它完全取决于位置,因此我为它创建了以下代码,在大多数实际设备中,我无法获取位置,并且总是在出现错误时通过Alert框返回到允许的状态取消或重试
getLocation = () = {
try {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
{
'title': 'Permission Title',
'message': 'App ' +
'Message'
}
)
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
that = this;
navigator.geolocation.getCurrentPosition(
(position) => {
this.checkLogin(position);
},
(error) => {
Alert.alert(
'Location',
'We are not able to get your current location.',
[
{text: 'Cancel', onPress: () => BackHandler.exitApp(), style: 'cancel'},
{text: 'Try Again', onPress: () => this.getLocation()},
],
{ cancelable: false }
)
},
{ enableHighAccuracy: false, timeout: 5000, maximumAge: 1000, distanceFilter: 1 }
);
} else {
alert("Location permission denied")
}
}catch(err){
alert(err)
}
}
在AndroidManifest.xml
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
是否有适用于所有设备的快速解决方案,或者如果我必须更新上述代码,请告诉我。
答案 0 :(得分:0)
我建议this library对本机地理位置进行反应。这是一个可靠的插件,可以直接使用。您甚至不需要执行自己的权限实现。它为你做。我将它用于React Native内置的Android和iOS应用程序。它甚至可以配置为在后台运行!