如何获取iOS应用网络权限?

问题描述

  • 在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开发中的这些权限,你搞懂了吗?中的不足之处,另一方面是为了解决部分读者的疑惑,希望读者大人们多多支持!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏行者悟空

一次nginx引起的线上502故障

今天突然接到某PM的求救,说微信支付到应用的请求一直返回502,于是初步了解完情况后,就进入了问题排查阶段。

1.1K2
来自专栏FreeBuf

DarkHydrus使用Phishery在中东地区窃取凭证

在上周,Unit 42发表了一个篇关于介绍一个名为DarkHydrus的新威胁组织的博文,我们观察到该组织的目标是位于中东地区的政府实体。在这篇文章中,我们对通...

612
来自专栏BeJavaGod

什么是分布式系统中的幂等性

最近很多人都在谈论幂等性,好吧,这回我也来聊聊这个话题,光看着俩字,一开始的确有点一头雾水,语文不好嘛,词太专业嘛,对吧 现如今我们的系统大多拆分为分布式SOA...

3683
来自专栏疯狂的小程序

ASP获取微信小程序的OpenID服务器端代码

尝试一下新鲜事物“微信小程序”,其中有一个业务场景,通过微信登陆小程序,这样需要获取小程序的用户ID(也就是openid)。微信小程序从安全角度考虑,不提供直接...

8048
来自专栏域名资讯

域名被墙了的解决办法有哪些?

  如果域名ping的通却打不开网站(排除服务器宕机),用代理可以打开一般说明域名被封了。假如域名下的网站非法信息多,敏感,又不整改,会直接被GFW墙掉,结果就...

3.2K5
来自专栏Android 开发者

Android P 应用兼容常见错误及建议

5.9K2
来自专栏伪君子的梦呓

如何备份一些容易看不到的文章

37310
来自专栏小白课代表

软件分享 | 3DS MAX 2018安装教程

3D Studio Max,常简称为3d Max或3dsMAX,是Discreet公司开发的(后被Autodesk公司合并)基于PC系统的三维动画渲染和制作软件...

1021
来自专栏安恒信息

Hacking Team 病毒测试环境分析

0x00 前言 安恒研究团队在Hacking Team泄露的文件中除了发现大量的后门、木马等攻击的源码,还发现了两个用于病毒安全性测试的源代码,分别是test...

3905
来自专栏北京马哥教育

jenkins+gitlab构建安卓自动编译环境

因工作关系接触到接触到安卓自动编译环境,网上的资料都推荐了jenkins,因为第一次接触安卓和jenkins,踩了不少的坑,有总结才有进步。 gitlab环境之...

4025

扫码关注云+社区

领取腾讯云代金券