文档章节

iOS开发之CoreTelephoney框架的应用

珲少
 珲少
发布于 02/26 15:45
字数 625
阅读 217
收藏 1
iOS

iOS开发之CoreTelephoney框架的应用

      CoreTelephoney框架用来获取手机网络状态以及运营商相关信息。

一、CTTelephonyNetworkInfo类

      这个类是CoreTelephoney框架的核心,使用它来获取手机的运营商、网络等状态信息。使用示例如下:

- (void)viewDidLoad {
    [super viewDidLoad];
    CTTelephonyNetworkInfo *info = [[CTTelephonyNetworkInfo alloc] init];
    //获取运营商信息
    CTCarrier *carrier = info.subscriberCellularProvider;
    NSLog(@"carrier:%@", [carrier description]);
}

运营商信息示例如下:

Carrier name: [中国移动]
Mobile Country Code: [460]
Mobile Network Code:[02]
ISO Country Code:[cn]
Allows VOIP? [YES]

CTTelephonyNetworkInfo类解析如下:

//获取所有运营商信息  iOS 12 后支持
@property(readonly, retain, nullable) NSDictionary<NSString *, CTCarrier *> *serviceSubscriberCellularProviders;
//当前获取运营商信息
@property(readonly, retain, nullable) CTCarrier *subscriberCellularProvider;
//无线网络提供信息
@property (nonatomic, readonly, retain, nullable) NSDictionary<NSString *, NSString *> * serviceCurrentRadioAccessTechnology;
//当前无线网络信息
/*
CTRadioAccessTechnologyGPRS      //2.5g
CTRadioAccessTechnologyEdge      //2.7G
CTRadioAccessTechnologyWCDMA     //3G
CTRadioAccessTechnologyHSDPA     //3.5G
CTRadioAccessTechnologyHSUPA     //3G与4G之间的过度技术
CTRadioAccessTechnologyCDMA1x    //3G
CTRadioAccessTechnologyCDMAEVDORev0  
CTRadioAccessTechnologyCDMAEVDORevA  
CTRadioAccessTechnologyCDMAEVDORevB 
CTRadioAccessTechnologyeHRPD   
CTRadioAccessTechnologyLTE       //4G
*/  
@property (nonatomic, readonly, retain, nullable) NSString* currentRadioAccessTechnology;

CTCattier类中定义了运营商相关的信息,解析如下:

//运营商名字
@property (nonatomic, readonly, retain, nullable) NSString *carrierName;
//国家编码
@property (nonatomic, readonly, retain, nullable) NSString *mobileCountryCode;
//网络编码
@property (nonatomic, readonly, retain, nullable) NSString *mobileNetworkCode;
//ISO编码
@property (nonatomic, readonly, retain, nullable) NSString* isoCountryCode;
//是否允许VOIP
@property (nonatomic, readonly, assign) BOOL allowsVOIP;

CTCellularData类用来监听用户的网络状态,可以设置当网络状态发生变化后回调的方法,例如:

cellularData = [[CTCellularData alloc] init];
    // 状态发生变化时调用
cellularData.cellularDataRestrictionDidUpdateNotifier = ^(CTCellularDataRestrictedState restrictedState) {
    switch (restrictedState) {
        case kCTCellularDataRestrictedStateUnknown:
            NSLog(@"蜂窝移动网络状态:未知");
            break;
        case kCTCellularDataRestricted:
            NSLog(@"蜂窝移动网络状态:关闭");
            break;
        case kCTCellularDataNotRestricted:
            NSLog(@"蜂窝移动网络状态:开启");
            break;     
        default:
            break;
    }
};

需要注意,在iOS中使用网络需要获取用户权限,如果用户没有给网络权限,获取到的状态也将是未开启。

二、CTCallCenter

      使用CTCallCenter相关类可以获取当前通话电话的相关信息,CTCallCenter通过管理中心,其中提供了一个方法来获取当前进行中的通话:

//获取当前所有激活中的通话
@property(readonly, retain, nullable) NSSet<CTCall*> *currentCalls;

通话被抽象成CTCall对象,解析如下:

//当前通话状态
/*
CTCallStateDialing  拨号
CTCallStateIncoming 来电
CTCallStateConnected 接通
CTCallStateDisconnected 挂断
*/
@property(nonatomic, readonly, copy) NSString *callState;
//通话ID
@property(nonatomic, readonly, copy) NSString *callID;

 

© 著作权归作者所有

珲少

珲少

粉丝 886
博文 394
码字总数 475753
作品 0
上海
程序员
私信 提问
Xamarin iOS开发实战第1章使用C#编写第一个iOS应用程序

Xamarin iOS开发实战第1章使用C#编写第一个iOS应用程序 C#原本是用来编写Windows以及Windows Phone的应用程序。自从Xamarin问世后,C#的作用就发生了很大的变化。它不仅可以编写关于Windows...

大学霸
2014/10/23
989
0
Xamarin iOS 7.9.0 发布,初步支持 iOS 8 beta2

Xamarin iOS 7.9.0 发布,初步支持即将到来的 iOS 8。其他改进如下: iOS Designer support: you will need to update Xamarin Studio and Visual Studio to their Alpha components to be a......

oschina
2014/06/20
2.9K
5
如果只有一个月的时间学 iOS 开发,我们该做些什么?

一年前,我还是一个 Android 开发者。那时候我没有任何 iOS 编程相关的知识,我甚至没用过任何苹果的产品。然而,这已成为过去,现在我已经能同时开发 iOS 和 Android 应用了。 现在,我想给...

oschina
2017/03/09
3.8K
13
谷歌Flutter跨平台应用开发SDK迎来首个发行预览版本

谷歌Flutter跨平台应用开发SDK迎来首个发行预览版本 2018-06-22 12:26编辑: 枣泥布丁分类:程序人生来源:程序师 跨平台Google Flutter预览版本 招聘信息: 图像处理及模式识别工程师 C/C+...

枣泥布丁
2018/06/22
0
0
Framework7 3.0.0 beta8 发布,全功能 HTML 框架

Framework7 3.0.0 beta8 已发布。更新内容如下: Phenome 将 object rest spread 语法转换为 Vue/React 组件中的 Object.assign 语法 下载地址: framework7-react.tar.gz framework7-vue.t......

达尔文
2018/06/12
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

总结:TCP/IP协议

一、介绍 TCP协议属于OSI七层模型中的传输层协议,提供处于网络连接中的两台计算机之间的数据 传输。   在传输层有两个性质不同的协议:TCP(Transmission Control Protocol,传输控制协议...

浮躁的码农
28分钟前
3
0
一言不合就删库跑路?万名贡献者和阿里巴巴开源的二三事

9 月 27 日云栖大会,阿里巴巴宣布贾扬清担任开源技术委员会负责人。 有人问:开源是为了什么? 从个人视角看,可以证明自己的专业能力,获得行业认可; 从企业视角看,可以建立技术影响力,...

大涛学弟
39分钟前
4
0
JAVA编程注意事项(性能篇)

1. 尽量在合适的场合使用单例 使用单例可以缩短加载的时间,提高加载的效率,单例主要适用于以下三个方面: 第一,控制资源的使用,通过线程同步来控制资源的并发访问; 第二,控制实例的产生...

你好夜故事
40分钟前
5
0
List 前端 AngularJS JS 对IP排序

数据格式 $scope.dataList=[ {"ip":"192.168.10.10", "port":"8080",...}, { "ip":"192.168.10.12", "port":"8080",... } ,.....] 调用 $scope.ipSortForward($scope.dataList,"ip") 核心代码......

最菜最菜之小菜鸟
40分钟前
4
0
浅析Cassandra LeveledCompactionStrategy

前言 Cassandra是基于LSM架构的分布式数据库。LSM中有一个很重要的过程,就是压缩(Compaction)。默认的压缩策略是SizeTieredCompactionStrategy,今天主要说一下另一种压缩策略LeveledComp...

阿里云官方博客
45分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部