最近大家提出了在微信等其他第三方的App 中进行定位时,如果没有定位权限,弹出的Alert点击后,可以跳转到系统的定位设置页面的现象,根据调研后可以得到以下结论:
1,该Alert为
系统级别Alert,为系统控制弹出,弹出的触发条件为,在需要定位时,直接调用定位接口,系统判断当前定位总开关未开启,则会提示用户是否设置定位功能,用户点击后,跳转系统的定位设置页面,如图:
2,该Alert
只能弹出
提示两次。
(1)不管用户点击了“设置”还是“取消”按钮,当两次弹出后,以后即使系统级别的定位总开关没开启,也不会再次提示,
要再次显示,需要卸载客户端,再次安装。
(2)对此APP的运行文件进行了深度解析查看,并没有找到在应用程序的doc或者tmp文件夹下有什么可以标记该状态的记录值,也就是说从系统级别用最高权限写入了App的配置文件。
(3)由于iOS程序的沙盒机制,该标记值我们无法通过代码逻辑进行改写,无法通过删除标记值的方式让这个Alert再次弹出。
3,该Alert中下部的提醒文字可以定制(如我定制成了:“XXX,我也可以把这显示出来了”),定制的方式是在配置的info.plist文件里边根据key来添加相应的多过语言即可
(NSLocationUsageDescripti on = "XXX,我也可以把这显示出来了.";)
4,此Alert弹出的逻辑仅限为系统级别的定位服务未开启,而针对在定位服务中关闭特定应用的定位服务的业务,此Alert不会被触发和弹出。
进行授权判断的方式:只能根据定位服务返回的异常信息进行判断用户是否授权了应用程序是否有权限获取定位结果。
自己调用的方法
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];(iOS 8)