如何获取iOS应用网络权限?
2017-03-21 21:38
423 查看
问题描述
在iOS 10下 ,首次进入应用时,会有询问是否允许网络连接权限的的弹窗,为更好进行用户交互,需要在打开应用时获取应用禁用网络权限状态(状态分为:未知、限制网络、未限制网络),客户端根据不同的权限状态定制相应的人机交互。问题调研
针对请求应用网络权限可能存在的几种情形,操作与对应的状态都是笔者测试得到的,具体如下所示:可能操作 | 关闭 | 无线局域网 | 无线局域网&蜂窝 | 不进行操作 | 锁屏 | 解锁 | 按Home键 |
---|---|---|---|---|---|---|---|
权限状态 | Restricted | NotRestricted | NotRestricted | Unknown | Unknown | 恢复原始状态 | 保持原有状态 |
解决问题
使用CoreTelephony.framework框架下的
CTCellularData类中的方法和属性进行解决,具体如下:
当联网权限的状态发生改变时,会在上述方法中捕捉到改变后的状态,可根据更新后的状态执行相应的操作。
CTCellularData *cellularData = [[CTCellularData alloc]init]; cellularData.cellularDataRestrictionDidUpdateNotifier = ^(CTCellularDataRestrictedState state){ //状态改变时进行相关操作 };
当查询应用联网权限时可以使用下面的方法:
CTCellularData *cellularData = [[CTCellularData alloc]init]; CTCellularDataRestrictedState state = cellularData.restrictedState; switch (state) { case kCTCellularDataRestricted: NSLog(@"Restricrted"); break; case kCTCellularDataNotRestricted: NSLog(@"Not Restricted"); break; case kCTCellularDataRestrictedStateUnknown: NSLog(@"Unknown"); break; default: break; }
补充一下
CoreTelephony.frameworkiOS7之前还是私有框架,框架内部提供还是私有API,但在iOS7之后该框架就成为公开的框架,大家可以尽情的使用了。
写这篇博客一方面是为了弥补前些日子写的博客iOS开发中的这些权限,你搞懂了吗?中的不足之处,另一方面是为了解决部分读者的疑惑,希望读者大人们多多支持!
以上内容,就是我对常用算法的简单总结。大家如有其他意见欢迎评论。
扫一扫下面的二维码,欢迎关注我的个人微信公众号攻城狮的动态(ID:iOSDevSkills),可在微信公众号进行留言,更多精彩技术文章,期待您的加入!一起讨论,一起成长!一起攻城狮!
相关文章推荐
- 第一次安装 iOS 应用获取网络权限
- 越狱ios设备上,如何使应用获取root权限
- Android中应用程序如何获得系统应用才能获取的权限
- iOS如何获取手机当前的网络状态
- Vickate_iOS_如何获取手机及应用的信息
- iOS如何获取网络图片(三)有沙盒的
- iOS杂谈14—iOS设备的UDID是什么?苹果为什么拒绝获取iOS设备UDID的应用?如何替代UDID?
- ios开发 如何在应用内获取当前周围wifi列表和强度 并实现在应用内控制wifi开关
- iOS 开发如何获取当前的应用版本号
- iOS如何判断应用是否开启摄像头权限
- iOS应用程序之如何获取版本号实现应用更新
- iOS系统中如何获取系统中已安装的应用信息
- iOS设备的UDID是什么?苹果为什么拒绝获取iOS设备UDID的应用?如何替代UDID?
- iOS设备的UDID是什么?苹果为什么拒绝获取iOS设备UDID的应用?如何替代UDID?
- iOS开发 - 如何获取设备的总容量和可用容量 网络运营商 3g/wifi判断 手机型号
- 【转】iOS设备的UDID是什么?苹果为什么拒绝获取iOS设备UDID的应用?如何替代UDID?
- iOS设备的UDID是什么?苹果为什么拒绝获取iOS设备UDID的应用?如何替代UDID?
- ios如何获取手机的网络状态和运营商名称
- iOS 应用如何完全支持 IPv6-ONLY 网络?
- iOS如何获取网络图片(二)