iOS系统定位权限弹出框和跳转系统设置


项目要做自定义没开启定位的弹框,但是发现当如果没有定位权限,会弹出的Alert,并点击设置alert上的设置后,可以跳转到系统的定位设置页面的现象,根据调研后可以得到以下结论:

  • 1,改Alert为系统级别Alert,为系统控制弹出,弹出的触发条件为,在需要定位时,直接调用定位接口,系统判断当前定位总开关未开启,则会提示用户是否设置定位功能,用户点击后,跳转系统的定位设置页面。 tu
  • 2,该Alert只能弹出提示两次。
    • 不管用户点击了“设置”还是“取消”按钮,当两次弹出后,以后即使系统级别的定位总开关没开启,也不会再次提示,要再次显示,需要卸载客户端,再次安装。
    • 用户如果在关闭定位总开关时,把app下的定位设置为不允许访问,那么则不会弹出改Alert。
    • 对此APP的运行文件进行了深度解析查看,并没有找到在应用程序的doc或者tmp文件夹下有什么可以标记该状态的记录值,也就是说从系统级别用最高权限写入了App的配置文件。
    • 由于iOS程序的沙盒机制,该标记值我们无法通过代码逻辑进行改写,无法通过删除标记值的方式让这个Alert再次弹出。
  • 3,该Alert中下部的提醒文字可以定制(如我定制成了:“XXX,我也可以把这显示出来了”),定制的方式是在配置的info.plist文件里边根据key来添加相应的多过语言即可

(NSLocationUsageDescription = "XXX,我也可以把这显示出来了.";)

  • 4,此Alert弹出的逻辑仅限为系统级别的定位服务未开启,而针对在定位服务中关闭特定应用的定位服务的业务,此Alert不会被触发和弹出。

进行授权判断的方式:只能根据定位服务返回的异常信息进行判断用户是否授权了应用程序是否有权限获取定位结果。

转自leisurehuang34的博客

附件: