React Native Expo Location 权限抛出 Location Provider 警告
React Native Expo Location Permission throwing Location Provider warning
我正在尝试使用 expo 创建一个 React Native 应用程序。
我的应用需要用户许可才能获取当前位置。
我有一个功能组件,它具有 useEffect()
挂钩以异步获取权限。
下面的代码。
const [location, setLocation] = useState(null);
useEffect(() => {
(async () => {
let permissionStatus = null;
if (Platform.OS === 'ios') {
let {status} = await Permissions.askAsync(Permissions.LOCATION);
permissionStatus = status;
} else {
let {status} = await ExpoLocation.requestPermissionsAsync();
permissionStatus = status;
}
if (permissionStatus !== 'granted') {
return;
}
let location = await ExpoLocation.getCurrentPositionAsync({});
setLocation(location);
console.log(location);
})();
}, []);
它有时可以正常工作,但有时会抛出此警告:
未处理的承诺拒绝:错误:位置提供者不可用。确保启用定位服务。
该应用程序显示权限请求对话框,并在同意后打开 phone 中的位置服务,但仍然抛出此 warning/error.
在对该网站和其他一些网站进行彻底研究后,我将 ACCESS_COARSE_LOCATION
添加到我的 app.json.android.permissions
配置中并尝试了一些其他值,但最后我仍然经常遇到这个问题。
值得一提的是,对于配置的所有排列,代码可以完美运行,有时会为相同的配置抛出此 error/warning。
我正在使用 Expo SDK 40 和 expo-location
包版本是 ~10.0.0 并在 [= 上测试40=] 10 phone 使用 Expo Go 客户端应用程序。
对于如何解决此问题的任何见解或建议,我将不胜感激。
随时询问任何说明。
这个问题感觉和我在过去一年里研究的一个问题很相似。在我的代码中,我最终也添加了 enableHighAccuracy,我认为这很有帮助。但它是一个未处理的承诺拒绝这一事实表明你至少应该添加一个 try/catch 以在它因任何原因中断时优雅地处理。
gpsLocationFromDevice = await Location.getCurrentPositionAsync({ enableHighAccuracy: true });
我正在尝试使用 expo 创建一个 React Native 应用程序。
我的应用需要用户许可才能获取当前位置。
我有一个功能组件,它具有 useEffect()
挂钩以异步获取权限。
下面的代码。
const [location, setLocation] = useState(null);
useEffect(() => {
(async () => {
let permissionStatus = null;
if (Platform.OS === 'ios') {
let {status} = await Permissions.askAsync(Permissions.LOCATION);
permissionStatus = status;
} else {
let {status} = await ExpoLocation.requestPermissionsAsync();
permissionStatus = status;
}
if (permissionStatus !== 'granted') {
return;
}
let location = await ExpoLocation.getCurrentPositionAsync({});
setLocation(location);
console.log(location);
})();
}, []);
它有时可以正常工作,但有时会抛出此警告:
未处理的承诺拒绝:错误:位置提供者不可用。确保启用定位服务。
该应用程序显示权限请求对话框,并在同意后打开 phone 中的位置服务,但仍然抛出此 warning/error.
在对该网站和其他一些网站进行彻底研究后,我将 ACCESS_COARSE_LOCATION
添加到我的 app.json.android.permissions
配置中并尝试了一些其他值,但最后我仍然经常遇到这个问题。
值得一提的是,对于配置的所有排列,代码可以完美运行,有时会为相同的配置抛出此 error/warning。
我正在使用 Expo SDK 40 和 expo-location
包版本是 ~10.0.0 并在 [= 上测试40=] 10 phone 使用 Expo Go 客户端应用程序。
对于如何解决此问题的任何见解或建议,我将不胜感激。
随时询问任何说明。
这个问题感觉和我在过去一年里研究的一个问题很相似。在我的代码中,我最终也添加了 enableHighAccuracy,我认为这很有帮助。但它是一个未处理的承诺拒绝这一事实表明你至少应该添加一个 try/catch 以在它因任何原因中断时优雅地处理。
gpsLocationFromDevice = await Location.getCurrentPositionAsync({ enableHighAccuracy: true });