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 40expo-location 包版本是 ~10.0.0 并在 [= 上测试40=] 10 phone 使用 Expo Go 客户端应用程序。
对于如何解决此问题的任何见解或建议,我将不胜感激。
随时询问任何说明。

这个问题感觉和我在过去一年里研究的一个问题很相似。在我的代码中,我最终也添加了 enableHighAccuracy,我认为这很有帮助。但它是一个未处理的承诺拒绝这一事实表明你至少应该添加一个 try/catch 以在它因任何原因中断时优雅地处理。

gpsLocationFromDevice = await Location.getCurrentPositionAsync({ enableHighAccuracy: true });