1.加入一个Framework(CoreTelephony.framework).
2.引入头文件
#import <CoreTelephony/CTTelephonyNetworkInfo.h>
#import <CoreTelephony/CTCarrier.h>
3.初始化
#
import
<UIKit/UIKit.h>
#
import
<CoreTelephony/CTTelephonyNetworkInfo.h>
#
import
<CoreTelephony/CTCarrier.h>
@interface
RootViewController : UITableViewController
{
//声明变量
CTTelephonyNetworkInfo *networkInfo;
}
@end
@implementation
RootViewController
- (
void
)viewDidLoad
{
[
super
viewDidLoad];
self.navigationItem.prompt = @
"CTTelephonyNetworkInfo"
;
self.navigationItem.title = @
"CTCarrier"
;
//初始化
networkInfo = [[CTTelephonyNetworkInfo alloc] init];
//当sim卡更换时弹出此窗口
networkInfo.subscriberCellularProviderDidUpdateNotifier = ^(CTCarrier *carrier){
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@
"Sim card changed"
delegate:nil cancelButtonTitle:@
"Dismiss"
otherButtonTitles:nil];
[alert show];
};
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//获取sim卡信息
CTCarrier *carrier = networkInfo.subscriberCellularProvider;
static
NSString *CellIdentifier = @
"Cell"
;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if
(cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
switch
(indexPath.row) {
case
0
:
//供应商名称(中国联通 中国移动)
cell.textLabel.text = @
"carrierName"
;
cell.detailTextLabel.text = carrier.carrierName;
break
;
case
1
:
//所在国家编号
cell.textLabel.text = @
"mobileCountryCode"
;
cell.detailTextLabel.text = carrier.mobileCountryCode;
break
;
case
2
:
//供应商网络编号
cell.textLabel.text = @
"mobileNetworkCode"
;
cell.detailTextLabel.text = carrier.mobileNetworkCode;
break
;
case
3
:
cell.textLabel.text = @
"isoCountryCode"
;
cell.detailTextLabel.text = carrier.isoCountryCode;
break
;
case
4
:
//是否允许voip
cell.textLabel.text = @
"allowsVOIP"
;
cell.detailTextLabel.text = carrier.allowsVOIP?@
"YES"
:@
"NO"
;
break
;
default
:
break
;
}
return
cell;
}
获取手机号码
1.NSString *number = [[NSUserDefaults standardUserDefaults] stringForKey:@"SBFormattedPhoneNumber"];
只能获取的是机主设置的本机号码,不能读取sim卡上的电话号码
2. CTSettingCopyMyPhoneNumber(); 毕竟私有API