- iOS7以前
系统配置之后出现:永不、始终 选项 - iOS8-10
系统配置之后出现:永不、始终 选项
通过配置 NSLocationWhenInUseUsageDescription 可出现 使用应用期间 选项 - iOS11+
不用配置NSLocationAlwaysUsageDescription,就会出现永不、始终、使用应用期间 选项 - iOS13
1.增加 允许一次 选项
用户选择 Allow Once
iOS 13 提出了 Temporary authorization 的概念。当用户选择 Allow Once 后,我们的 App 就获得了 Temporary authorization ,也就是临时权限。该权限有以下特点:
1.实际的权限类型是:WhenInUse; - App 重启后,定位权限会重新变成 NotDetermined,下次开启定位时再申请定位权限会重新弹框让用户确认;
2.在 iOS 13 系统,申请 WhenInUse 或 Always 权限时,系统都会先弹出来下面的弹框让用户选择:
"使用app时允许、允许一次、不允许"
用户选择 Allow While In Use
如果用户选择 Allow While In Use ,我们的 App 会获得 WhenInUse 权限。
如果之前申请的是 WhenInUse 权限,那么就跟 iOS 13 之前版本的系统表现没什么区别;
系统会在某个时间再弹出一个弹框询问用户是继续给我们的 App WhenInUse 权限,还是切换成 Always 权限,iOS 13 中,没法直接向用户要 Always 权限了,必须要经过一个二次确认。
备注:系统确认弹窗弹出时,为打断状态(UIApplicationStateInactive)。
参考资料:
https://www.jianshu.com/p/39e6d61b256c
http://foogry.wang/2019/09/18/2019-09-18-ios-ding-wei-quan-xian-na-xie-shi/