iOS托管式Expo React Native应用自定义位置权限消息不显示
解决iOS Expo React Native自定义位置权限提示不显示的问题
问题根源
你调用Location.requestForegroundPermissionsAsync()请求的是前台位置权限,但在app.json的infoPlist中配置的是NSLocationAlwaysAndWhenInUseUsageDescription——这个字段对应的是「始终允许(含后台)」权限的提示文本,和当前请求的权限类型不匹配,因此系统会显示默认提示。
正确配置
修改app.json的infoPlist,添加对应前台权限的描述字段NSLocationWhenInUseUsageDescription:
{ "expo": { "ios": { "supportsTablet": true, "bundleIdentifier": "com.aaa.bbb", "infoPlist": { "NSLocationWhenInUseUsageDescription": "Allow my app to use your location to do this and that.....", // 若后续需要后台权限,再保留此字段 "NSLocationAlwaysAndWhenInUseUsageDescription": "Allow my app to use your location even when backgrounded for XYZ purposes....." } } } }
关键注意事项
- 修改配置后,必须重新构建TestFlight安装包,旧包不会读取新的
infoPlist配置 - 确保字段名称完全正确(iOS的infoPlist字段大小写敏感,不可拼写错误)
- 若后续需要申请后台位置权限,需调用
Location.requestBackgroundPermissionsAsync(),同时保留NSLocationAlwaysAndWhenInUseUsageDescription配置
内容的提问来源于stack exchange,提问作者magnetarneo
相关产品推荐
相关产品推荐

