蜂窝相关

1.蜂窝权限状态获取

检查应用的蜂窝权限,可使用CTCellularData类

  1. #import <CoreTelephony/CTCellularData.h>
  2. 创建CTCellularData实例,监听蜂窝权限的变化,注意:这个CTCellularData实例需要设置成全局变量,在需要获取蜂窝权限状态的场景下使用这个对象
static CTCellularData *_cellularData;
- (void)addObserverForWWAN {
_cellularData = [CTCellularData new];
_cellularData.cellularDataRestrictionDidUpdateNotifier = ^(CTCellularDataRestrictedState state) {
        switch (state) {
            case kCTCellularDataRestricted:
                NSLog(@"蜂窝-变化-受限");
                break;
            case kCTCellularDataNotRestricted:
                NSLog(@"蜂窝-变化-不受限");
                break;
            default:
                NSLog(@"蜂窝-变化-未知");
                break;
        }
    };
}

当添加这个监听时,会立即执行一次上面这个block回调.

  1. 获取当前蜂窝权限
+ (CTCellularDataRestrictedState)stateOfWWAN {
    return _cellularData.restrictedState;
}

2. 判断蜂窝是否开启

网上找了很久没找到对应的方法,只找到判断wifi开启状态的方法,这个判断蜂窝开启的方法由此演化得来(在iOS12,iOS10上面测试均有效)

  1. 导入头文件
    #import <net/if.h>
    #import <ifaddrs.h>
  2. 关键代码
+ (BOOL)isWWANEnable {
    NSCountedSet *countedSet = [NSCountedSet new];
    struct ifaddrs *interfaces;
    if (!getifaddrs(&interfaces)) {
        for (struct ifaddrs *interface = interfaces; interface; interface = interface->ifa_next) {
            if ((interface->ifa_flags & IFF_UP) == IFF_UP) {
                NSString *ifa_name = [NSString stringWithUTF8String:interface->ifa_name];
                [countedSet addObject:ifa_name];
                NSLog(@"ifa_name: %s, sa_family: %d", interface->ifa_name, interface->ifa_addr->sa_family);
            }
        }
    }
    freeifaddrs(interfaces);  // 需要手动释放
    BOOL open = [countedSet countForObject:@"pdp_ip0"] > 1 ? YES : NO;
    NSLog(@"cellular open status: %@", open ? @"open" : @"unopen");
    return open;
}

当没有打开蜂窝时,pdp_ip0个数为0, 当打开蜂窝时,pdp_ip0个数有4个

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,541评论 1 32
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 7,218评论 0 17
  • 刚刚回宿舍,看到二楼楼梯口阿姨摆出来的桌子,上面放着一张表。 “请要回家的同学签到后再离开。” 脑子里一下子闪过9...
    啊蛋萱阅读 286评论 2 2
  • 《芒果街上的小屋》 作者:(美)桑德拉·希斯内罗丝 有点遗憾,我这么迟才看到这本书。庆幸的是,还好我没有错过它。...
    沐拉拉阅读 699评论 0 5
  • 爱是断魂美酒 作词:王春雷 一: 喝一碗伤心的汤难以入喉 听一首断肠的曲伤上加伤 闻一闻心酸的痛痛不欲生 看一看沧...
    Zggs预言d阅读 296评论 0 0

友情链接更多精彩内容