ios获取sim卡信息以及手机号码


  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


你可能感兴趣的:(ios获取sim卡信息以及手机号码)