React-Native Expo Location 获取 iOS 权限

发布于 2025-01-09 14:58:28 字数 864 浏览 0 评论 0原文

我正在使用 Expo 开发一个反应本机应用程序,并使用 expo-location 来获取手机的位置。 这是我的所有依赖项,以防出现我未知的冲突: 依赖项

在当前设置中,我使用加载屏幕来请求前台和后台权限(以及其他一些事情,例如建立 Firebase 连接并获取推送权限)。 获得权限后,将启动 Location.startLocationUpdatesAsync,这就是我需要这些权限的目的。

该问题仅发生在通过 Expo Go 的真实设备上(设备使用 iPhone 12 mini,iOS 15.3.1)。 在 iOS 模拟器、真实的和模拟的 Android 设备上,不会出现这些问题。

如果我尝试请求两个位置权限,应用程序将在加载屏幕中结束,因为 Location.requestBackgroundPermissionsAsny 永远不会解析并出现以下错误: 请求backgroundPermission时出错

如果我注释掉后台权限请求,我将获得前台权限,但我收到以下警告: 警告,当仅请求 foregroundPermissions 时,

我已经在 json 中包含了 UIBackgroundModes 和UsageDescription。 应用 json

I'm developing a react-native app with Expo, and using expo-location for getting a phone's location.
Here are all my dependencies, in case there are conflicts unknown to me:
Dependencies

In the current setup, I'm using a loading screen to request both foreground and background permissions (and some other things, for example establishing a firebase connection and getting push permissions).
After the permissions, a Location.startLocationUpdatesAsync is started, which is what I need these permissions for.

The problems only occur on a real device via Expo Go (device used iPhone 12 mini, iOS 15.3.1).
On an iOS Emulator, real and emulated Android devices, none of these problems occur.

If I try to request both location permissions, the app ends in the loading screen, because Location.requestBackgroundPermissionsAsny never resolves with the following error:
Error, when asking for backgroundPermission

If I comment the background permission request out, I get the Foreground permission, but I get the following warning:
Warning, when only asking for foregroundPermissions

I already included both UIBackgroundModes and UsageDescription in my json.
app json

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

他不在意 2025-01-16 14:58:28

您可以尝试 requestforegroundpermissionsasync

  • 要求用户在应用程序位于前台时授予位置权限。

例子

 let { status } = await Location.requestForegroundPermissionsAsync();
      if (status !== 'granted') {
        setErrorMsg('Permission to access location was denied');
        return;
      }

you can try requestforegroundpermissionsasync

  • Asks the user to grant permissions for location while the app is in the foreground.

Example

 let { status } = await Location.requestForegroundPermissionsAsync();
      if (status !== 'granted') {
        setErrorMsg('Permission to access location was denied');
        return;
      }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文