首页 > 代码库 > (三)获取iphone的IMSI
(三)获取iphone的IMSI
今天的任务是 iPhone上怎样获取 imsi 信息 来判断所属运营商,资料找了很久!总体有两种方案,但是其中一种好像不行
这里我都记录下来吧:
1: 这是使用coreTelephony.framework获取imsi (我iOS 7 上面使用是没用的 这里我只是记录下)
#define PRIVATE_PATH "/System/Library/PrivateFrameworks/CoreTelephony.framework/CoreTelephony"
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
#if !TARGET_IPHONE_SIMULATOR
void *kit = dlopen(PRIVATE_PATH,RTLD_LAZY);
NSString *imsi = nil;
int (*CTSIMSupportCopyMobileSubscriberIdentity)() = dlsym(kit, "CTSIMSupportCopyMobileSubscriberIdentity");
imsi = (NSString*)CTSIMSupportCopyMobileSubscriberIdentity(nil);
dlclose(kit);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"IMSI"
message:imsi
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[alert release];
#endif
}
2、后来在无意识中我找到了以下方案
无庸置疑,以下的所有操作必须建立在已越狱的iPhone手机上。(这点我还是要说下,我用的是非越狱手机,但是可以获取到的)
首先,在建立工程之后我们要引入一个名为CoreTelephony.framework的框架,他是一个是一个有关电话、短信和邮件通讯的框架。
需引入框架CoreTelephony.framework (私有API)
导入头文件
(CoreTelephony.framework 库需要导入)
#import<CoreTelephony/CTTelephonyNetworkInfo.h>
#import<CoreTelephony/CTCarrier.h>
+(NSString*)getImsi{
NSString *ret = [[NSString alloc]init];
CTTelephonyNetworkInfo *info = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier *carrier = [info subscriberCellularProvider];
if (carrier == nil) {
return @"0";
}
NSString *code = [carrier mobileNetworkCode];
if ([code isEqual:@""]) {
return @"0";
}
if ([code isEqualToString:@"00"] || [code isEqualToString:@"02"] || [code isEqualToString:@"07"]) {
ret = @"中国移动";
}
if ([code isEqualToString:@"01"]|| [code isEqualToString:@"06"] ) {
ret = @"中国联通";
}
if ([code isEqualToString:@"03"]|| [code isEqualToString:@"05"] ) {
ret = @"中国电信";;
}
return ret;
}
这里当作记录吧
(三)获取iphone的IMSI