当前位置: 首页 > 编程笔记 >

使用Objective-C获取IPHONE手机IMSI序列号

谈禄
2023-03-14
本文向大家介绍使用Objective-C获取IPHONE手机IMSI序列号,包括了使用Objective-C获取IPHONE手机IMSI序列号的使用技巧和注意事项,需要的朋友参考一下

获取IPhone 的IMSI序列号

#include <dlfcn.h>
#define PRIVATE_PATH "/System/Library/PrivateFrameworks/CoreTelephony.framework/CoreTelephony"
- void getImsi(){
#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
}

通过IMSI获取运营商

NSString *imsi = CTSIMSupportCopyMobileSubscriberIdentity();
NSString *userMobileType = [StatisticsOperation getCarrier:imsi];
 getCarrier 方法如下
+ (NSString *)getCarrier:(NSString *)imsi {
  if (imsi == nil || [imsi isEqualToString:@"SIM Not Inserted"] ) {
    return @"Unknown";
  }
  else {
    if ([[imsi substringWithRange:NSMakeRange(0, 3)] isEqualToString:@"460"]) {
      NSInteger MNC = [[imsi substringWithRange:NSMakeRange(3, 2)] intValue];
      switch (MNC) {
        case 00:
        case 02:
        case 07:
          return @"China Mobile";
          break;
        case 01:
        case 06:  
          return @"China Unicom";
          break;
        case 03:
        case 05:  
          return @"China Telecom";
          break;
        case 20:
          return @"China Tietong";
          break;
        default:
          break;
      }
    }
  }
  return @"Unknown";
}

获取手机号

+ (NSString*)getPhoneNumber
{
     NSString *num = [[NSUserDefaults standardUserDefaults] stringForKey:@"SBFormattedPhoneNumber"];
     NSLog(@"Phone Number: %@", num);
     return num;
}

以上所述就是本文的全部内容了,希望大家能够喜欢。

 类似资料:
  • 问题内容: 如何在Linux系统中获取机器序列号和CPU ID? 示例代码受到高度赞赏。 问题答案: 这是Linux内核似乎使用的内容: 然后可以将其用作例如: 这篇Wikipedia文章中有关如何使用该指令的很好参考。 编辑 Wikipedia文章说,序列号是随Pentium III一起引入的,但是由于隐私问题,以后的型号中不再使用该序列号。在Linux系统上,您可以通过执行以下操作检查此功能(

  • 问题内容: 关于基本的Android编程,我还有另一个问题: 如何访问GPS以获取正在运行该应用程序的手机的当前位置?检索信息需要多长时间?在这种情况下,GPS可能会被禁用,如何再次启用/禁用它。 必须在andorid清单中授予哪些权限? 问候和感谢您的回答, 诗丹 问题答案: 一些答案: 访问:请参见LocationManager和LocationListener。 权限:android.per

  • 本文向大家介绍Android 手机获取手机号实现方法,包括了Android 手机获取手机号实现方法的使用技巧和注意事项,需要的朋友参考一下 最近做到一个项目,需要获取手机号。项目中使用的手机卡为电信卡,那么就以此为例吧。 网上不符合需求的方法 Google了一下,网上的做法如下: 添加权限: <uses-permissionandroid:nameuses-permissionandroid:na

  • 我如何使用Flutter以编程方式获取运行我的android应用程序的设备的电话号码? 我知道我们可以使用以下语法在android Studio中轻松做到这一点: 但是如何使用颤振来做到这一点?

  • 我在这里找到了问题的基本答案:在MSMQ、C#中枚举所有传出队列,然而,当我试图运行答案中发布的代码时,在抛出异常“无效查询”之前需要几秒钟到几分钟。 堆栈跟踪:在System.Management.ManagementException.throwwithExtendedInfo(ManagementStatus errorCode)在System.Management.ManagementOb

  • 问题内容: 我正在使用Ubuntu。如何使用C程序获取本机或接口eth0的MAC地址。 问题答案: 您需要遍历计算机上所有可用的接口,并与标志一起使用以获取mac地址。mac地址将以6字节的二进制数组形式获取。您还希望跳过环回接口。