前言:
开发中,我们常常需要打开设置界面赋予我们的APP各种权限,以完成拍照,定位等功能。在iOS 10以前我们通常的做法是弹出带按钮的提示框,由用户点击确定后,自动跳转入系统设置界面完成各项赋值操作后再返回APP。但在iOS 10之后,苹果对APP权限的赋予有了新的规范,任何APP的权限一旦发生变化,重新回到APP时,都会造成该APP重启进入,由次会造成极其不佳的用户体验(比如输入信息时,万里长征只差最后一步拍照时,打开拍照权限后一切又得重来)。然而,苹果设置如此我等也无能为力,只能采取迂回战术提升用户体验!
解决方案:
方案1:参照用户登录信息缓存的策略,在跳转到权限设置界面之前,我们可以将当前控制器VC作为模型数据存储到本地缓存中,每次应用重启时,先检测本地是否有该类缓存,有则直接打开,无则正常进入。该方案缺点在于,直接打开存储VC时,因上级界面为空,故只能返回到首页,无法正常返回上一级界面,同时需要将存储VC中的相应数据也缓存下来,打开VC时再提取显示,提升用户体验。
方案2:比起方案1,方案2更加方便快捷,我们可以在用户需要使用权限功能之前确保应用权限已完成授予操作,由此避开相应问题,比如在应用启动时,或者 权限所需 VC 刚进入时就进行权限检测
附:
此处共享一个在应用运行时中直接打开该应用的权限设置界面的方法:
leturl =NSURL.init(string:UIApplicationOpenSettingsURLString)
UIApplication.sharedApplication().openURL(url!)