我们如何在 Expo SDK 42+ 中获得后台位置权限?
Posted
技术标签:
【中文标题】我们如何在 Expo SDK 42+ 中获得后台位置权限?【英文标题】:How do we get Background Location Permissions in 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()
【问题讨论】:
【参考方案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”,但我没有测试自己。
当我使用这个键时,我仍然收到警告以上是关于我们如何在 Expo SDK 42+ 中获得后台位置权限?的主要内容,如果未能解决你的问题,请参考以下文章
找不到变量:用户。我正在使用 firebase auth 和最新的 SDK、expo SDK 42、react navigation 6.x.x
Expo React Native Simulator 错误:Facebook SDK 尚未初始化
由于我更新了 expo-sdk,我无法运行我的 expo 项目
React Native expo-location:如何让后台位置服务更新更频繁?
Expo SDK 需要 Expo 才能运行。似乎本机 Expo 模块不可用,并且此代码未在 Expo 上运行。我想生成apk
这是在 sdk 39 中使用 expo 裸工作流在 infoplist 文件中添加字符串的方法吗? #ReactNative