zoukankan      html  css  js  c++  java
  • (三)获取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;

    }

    这里当作记录吧

  • 相关阅读:
    杂记
    实战:PSP上运行Windows 95
    [英语阅读笔记] CodeSnip: Uploading Multiple Files At Once
    整理网上的一些关于sharepoint编码方面的最佳实践 Virus
    ASP.NET、SharePoint中另存文件的长文件名被截断的原因及解决办法 Virus
    一个由Erlang引发的故事,关于语言和工资的故事 Virus
    ASP.NET统计图表控件 Virus
    关于验证码的思考 Virus
    Design Pattern 设计模式【观察者】 Virus
    moss开发实施过程中遇到的问题总结:项目层面 Virus
  • 原文地址:https://www.cnblogs.com/kingbo/p/3941348.html
Copyright © 2011-2022 走看看