找了好多方法测试手机是否存在SIM卡,好多都是在 .h 中添加好多方法名的那个。
如:
引入 CoreTelephony.framework
extern NSString* const kCTSMSMessageReceivedNotification;
extern NSString* const kCTSMSMessageReplaceReceivedNotification;
extern NSString* const kCTSIMSupportSIMStatusNotInserted;
extern NSString* const kCTSIMSupportSIMStatusReady;
id CTTelephonyCenterGetDefault(void);
void CTTelephonyCenterAddObserver(id,id,CFNotificationCallback,NSString*,void*,int);
void CTTelephonyCenterRemoveObserver(id,id,NSString*,void*);
int CTSMSMessageGetUnreadCount(void);
int CTSMSMessageGetRecordIdentifier(void * msg);
NSString * CTSIMSupportGetSIMStatus();
NSString * CTSIMSupportCopyMobileSubscriberIdentity();
id CTSMSMessageCreate(void* unknow/*always 0*/,NSString* number,NSString* text);
void * CTSMSMessageCreateReply(void* unknow/*always 0*/,void * forwardTo,NSString* text);
void* CTSMSMessageSend(id server,id msg);
NSString *CTSMSMessageCopyAddress(void *, void *);
NSString *CTSMSMessageCopyText(void *, void *);
然后,即可利用 [CTSIMSupportGetSIMStatus() isEqualToString:kCTSIMSupportSIMStatusNotInserted] 进行判断。
if([CTSIMSupportGetSIMStatus() isEqualToString:kCTSIMSupportSIMStatusNotInserted]){
NSLog(@"不存在sim卡");
}
else{
NSLog(@"存在sim卡");
}
亲测了一下,该方法打印出来显示总是存在SIM卡
好吧,毙掉该方法
使用第二个方法
方法二:首先添加静态库
CoreTelephony.framework
在需要进行拨打电话的页面中导入头文件:
#import <CoreTelephony/CTTelephonyNetworkInfo.h>
#import <CoreTelephony/CTCarrier.h>
添加方法如下:
// 判断设备是否安装sim卡
- (BOOL)isSIMInstalled
{
CTTelephonyNetworkInfo *networkInfo = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier *carrier = [networkInfo subscriberCellularProvider];
if (!carrier.isoCountryCode) {
NSLog(@"请安装好手机SIM卡后在拨打电话.");
return NO;
}else{
NSLog(@"存在SIM卡");
return YES;
}
}
参考文章链接:http://www.jianshu.com/p/7b4874b9998e
网友评论