首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对InHouse应用程序使用专用API获取IMEI、ICCID和IMSI

对InHouse应用程序使用专用API获取IMEI、ICCID和IMSI
EN

Stack Overflow用户
提问于 2013-09-24 02:56:26
回答 2查看 4.8K关注 0票数 1

我正在尝试构建一个返回以下信息的应用程序:

  • IMEI
  • ICCID
  • IMSI

我看到我可以使用CoreTelephony,但我开始怀疑:要使用这些头文件(从类转储导入CoreTelephony.h ),设备必须被越狱?

如果不是,则CoreTelephony为iOS6提供有效的只读

我就是这样做的:

代码语言:javascript
复制
CTServerConnectionRef conn;
void ConnectionCallback(CTServerConnectionRef connection, CFStringRef string, CFDictionaryRef dictionary, void *data) {
    NSLog(@"ConnectionCallback");
    CFShow(dictionary);
}

- (NSString *)coreTelephonyInfoForKey:(const NSString *)key {
    NSString *retVal = nil;
    conn = _CTServerConnectionCreate(kCFAllocatorDefault, ConnectionCallback,NULL);
    if (conn) {
        struct CTResult result;
        CFMutableDictionaryRef equipmentInfo = nil;
        _CTServerConnectionCopyMobileEquipmentInfo(&result, conn, &equipmentInfo);
        if (equipmentInfo) {
            retVal = [NSString stringWithString:CFDictionaryGetValue(equipmentInfo, (__bridge const void *)(key))];
            CFRelease(equipmentInfo);
        }
        CFRelease(conn);
    }
return retVal;
}
- (NSString *)IMEI {
    return [self coreTelephonyInfoForKey:@"kCTMobileEquipmentInfoIMEI"];

这是我的CoreTelephony.h

EN

回答 2

Stack Overflow用户

发布于 2013-09-24 15:04:36

部分回答你的问题:

  • 未被记录为私有API的API(在iOS领域)。我想你在考虑到"iphone-privateapi“标签后才明白这一点。
  • 私有API既可以用于越狱电话,也可以用于非越狱电话。一般来说,公共API和私有API之间唯一的技术区别是是否在.h文件中定义了API。
  • 有时,私有API会被更新(修改、删除或受权利保护)。最后一种(受权利保护)是最常见的情况。权限是授予您使用某些API的能力的权限。在被监禁的设备上,系统应用程序可以有权限。在破门而入的设备上,任何应用程序都可以享有相应的权利。

回到你的问题上。我没有在CoreTelephony 7上试过。你试过了吗?(我不确定“如果不是,CoreTelephony只对iOS6有效吗?”暗示你试过了)。

票数 1
EN

Stack Overflow用户

发布于 2013-10-09 07:18:14

它可能需要com.apple.coretelephony.Identity.get的权利。在首选项应用程序中找到的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18972242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档