最近项目因为用不到后台定位功能,需要把后台定位关闭,只针对info.plist 列表里的几个关于定位的key和权限询问弹窗,以及设置里的定位权限做一下说明。
我用的Xcode版本是12.0。
常用的一共有3个key:
a. NSLocationWhenInUseUsageDescription(只在应用使用期间开启):只能用于应用在前台时需要获取用户位置的权限说明
b. NSLocationAlwaysUsageDescription(始终允许,前后台都开启):用于应用进入后台时需要获取位置权限说明
c. NSLocationAlwaysAndWhenInUseUsageDescription(始终允许,前后台都开启,iOS11新增的):用于应用进入后台时需要获取用户位置的权限说明
现在针对于不同手机系统版本做一下关联说明:
(1)在低于iOS11的系统版本手机上:
首先说明一下:设置-隐私-定位-应用的定位权限始终有三个选项(永不,始终,使用应用期间),其次,关于三个key的不同组合对于弹窗的影响如下:
a+b+c:应用刚安装时打开的位置权限弹窗如下:
a+b:应用刚安装时打开的位置权限弹窗如下:
在低版本系统的手机上,加不加c这个key的弹窗区别如上,可能不仔细看没看出有啥区别,但请仔细看大标题那行字,加了c后,是询问在用户在并未使用应用时访问位置,而不加c,弹窗的标题就变成询问用户在使用应用时访问位置,差两个字,区别就大多了,并未使用应用访问位置就是应用退入后台后是否还可以访问位置,点击允许,就默认是始终开启定位功能,用户无法选择“应用使用期间开启”这个选项,需要自己去设置里自己改,而下面这个弹窗就只能让用户选择 “使用期间开启” 或者 “不允许使用定位” 这两个选项,如果用户要开启后台定位功能,也需要自己去设置里修改成“始终”这个选项。
(2)在iOS11以上,iOS14以下的系统版本的手机上(比如iOS12):
注意:在设置-隐私-定位-应用的定位权限,里面的选项是跟info.plist的key相关联的,key设置的不同,里面选项个数也会不用,具体如下:
a+b+c:设置-隐私-定位-应用的定位权限列表里有3个选项(永不,始终,使用应用期间),意思是允许开启后台定位功能的,看用户自己选择了
a+b+c :应用刚安装时打开的位置权限弹窗如下:
一个小细节:a+b+c情况,弹窗副标题会按照c的key对应的value内容显示,所以为了防止出现设置不同弹窗提示不同,三个key的value对应的权限描述内容尽量保持一致。
a+b:设置-隐私-定位-应用的定位权限列表里只有2个选项(永不,使用应用期间),意思是只有应用使用期间可以定位,不支持后台定位功能
a+b:应用刚安装时打开的位置权限弹窗如下:
看得出来,能不能后台定位直接体现在了权限弹窗上了,上面弹窗的始终允许就是允许应用后台定位,下面弹窗只有应用使用期间定位功能,也就是只有应用处于前台运行时才能定位,退到后台就自动关闭定位功能了。
(3)在iOS14及以上系统版本的手机上:
设置里的权限列表数量也是跟key的设置相关联的,跟(2)的区别只是弹窗样式的不同
a+b+c:应用刚安装时打开的位置权限弹窗如下:
a+b:弹窗也是长这样,就不单截图了,只不过a+b这种情况,设置里权限列表里只有(永不,使用应用期间)两个选择,a+b+c会多一个“始终”。
需要注意的一点是,如果是a+b+c这种情况,弹窗上你选了“使用App时允许”,偶尔当应用退到后台时会再弹出来一个弹窗,弹窗样式如下:
弹窗大致意思就是,因为你最开始选择的是应用使用期间定位,而且当时的权限里没有始终允许定位的选项,你可能会需要,我询问你一次,你要不要开启后台定位功能,如果这时候你选“保持仅使用期间”这个选项,那就是依然授权应用使用期间定位,关闭后台定位,如果你选下面这个选项,就相当于开启了应用后台定位功能。
如果你的应用不需要后台定位功能,为了防止这个弹窗的弹出,建议直接将c这个key去掉,这样应用本身的定位权限就不存在后台定位这个功能了,也就不会弹出这个询问弹窗了。
但如果你需要使用后台定位功能,除了添加上面这些key,还需要做一些其他设置,这里就不再叙述了,请翻阅其他博主的博客,有的讲的很清楚,上述内容如有描述和理解错误的地方,烦请多多指正。