支持 iOS 11 位置权限,同时在 iOS 10 上禁止“使用时”
Posted
技术标签:
【中文标题】支持 iOS 11 位置权限,同时在 iOS 10 上禁止“使用时”【英文标题】:Supporting iOS 11 location permissions while disallowing "when in use" on iOS 10 【发布时间】:2017-08-27 14:38:46 【问题描述】:在使用 ios 10 时,我需要用户在不允许定位和始终允许定位之间进行选择,因此我在 Info.plist 中添加了密钥 NSLocationAlwaysUsageDescription
。
现在有了新的 iOS 11 版本,我需要添加以下两个键来获取位置权限提示 - NSLocationAlwaysAndWhenInUseUsageDescription
和 NSLocationWhenInUseUsageDescription
。
当我尝试删除看似多余的NSLocationWhenInUseUsageDescription
时,它不允许在 iOS 11 上显示位置提示
现在的问题是我的 iOS 10 用户在他们的设置中有一个“使用时”选项,这是我不想要的。
有什么方法可以创建一个版本,允许 iOS 10 的“从不”和“总是”,并允许 iOS 11 上的所有三个选项?
【问题讨论】:
只是为了确定:您基本上是在询问您是否可以在您的 plist 中执行以下操作:if iOS10
useiOS10plistSettings` 和 if iOS11
useiOS11plistSettings`?有趣的问题!
【参考方案1】:
您需要在应用的 Info.plist 文件中包含 NSLocationWhenInUseUsageDescription 和 NSLocationAlwaysAndWhenInUsageDescription 键。 (如果您的应用支持 iOS 10 及更早版本,则还需要 NSLocationAlwaysUsageDescription 键。)如果这些键不存在,授权请求将立即失败。
https://developer.apple.com/documentation/corelocation/choosing_the_authorization_level_for_location_services/request_always_authorization#see-also
【讨论】:
以上是关于支持 iOS 11 位置权限,同时在 iOS 10 上禁止“使用时”的主要内容,如果未能解决你的问题,请参考以下文章
iOS 13 - 请求“使用时”位置权限会阻止我稍后请求“始终”