【问题标题】:How do we get Background Location Permissions in Expo SDK 42+?我们如何在 Expo SDK 42+ 中获得后台位置权限?
【发布时间】:2021-12-18 20:03:37
【问题描述】:

我有一个 React-Native/Expo 托管工作流应用程序,当应用程序在后台运行时,我需要在其中跟踪用户的位置。

我已成功请求并接收到用户的前台位置,但在用户请求其后台位置权限的下一页我收到以下警告:

[Unhandled promise rejection: Error: One of the NSLocation*UsageDescription keys must be present in Info.plist to be able to use geolocation]

这是请求“背景位置”的代码的 sn-p

async function getBackgroundLocationAsync() {
          let { status } = await Location.requestBackgroundPermissionsAsync()
            if(status !=='granted'){
              setErrorMsg('Permission to access background location was denied')
              return;
            }
          let backgroundLocation = await Location.getBackgroundPositionAsync({});
          setBackgroundLocation(backgroundLocation);
        }


   getBackgroundLocationAsync()

【问题讨论】:

    标签: javascript react-native geolocation expo location


    【解决方案1】:

    该错误准确地说明了您需要做什么:在 ios.infoPlist 的 package.json 中添加 NSLocation 属性。您还需要添加 UIBackgroundMode。

    您可以在此处查看完整文档:https://docs.expo.dev/versions/latest/sdk/location/#configuration

    【讨论】:

    • 所以,我之前看到了这个方法并按照说明的字符串,它声称我们需要使用“自定义构建”来获得后台权限,这似乎已经被贬值了。是这样吗?还是我误会了?
    • 我目前在 app.json 文件中定义了NSLocationAlwaysUsageDescription,但我收到了这个错误。它指定它是NSLocations 之一,但没有指定是哪一个。是否可以确定我需要哪一个?
    • NSLocationAlwaysUsageDescription 已弃用:developer.apple.com/documentation/bundleresources/…。你应该使用我认为“NSLocationAlwaysAndWhenInUseUsageDescription”,但我没有测试自己。
    • 当我使用这个键时,我仍然收到警告
    猜你喜欢
    • 2020-04-24
    • 1970-01-01
    • 2020-12-17
    • 1970-01-01
    • 2021-04-08
    • 1970-01-01
    • 2021-09-13
    • 2016-08-24
    • 1970-01-01
    相关资源
    最近更新 更多