簡體   English   中英

使用 InHouse Apps 的私有 API 獲取 IMEI、ICCID 和 IMSI

[英]Use Private API for InHouse Apps to get IMEI, ICCID and IMSI

我正在嘗試構建一個返回以下信息的應用程序:

  • IMEI
  • ICCID
  • IMSI

我看到我可以使用 CoreTelephony,但我開始懷疑:要使用這些頭文件(從 class-dump 導入 CoreTelephony.h),設備必須越獄嗎?

如果沒有,CoreTelephony其適用於iOS6的

我就是這樣做的:

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

部分回答你的問題:

  • 未記錄的 API 稱為私有 API(在 iOS 領域)。 我認為您考慮到標簽“iphone-privateapi

  • 私有 API 可以在越獄和非越獄手機上使用。 一般來說,公共 API 和私有 API 之間的唯一技術區別是 API 是否在 .h 文件中定義。

  • 有時,私有 API 會失效(修改、刪除或受權利保護)。 最后一個(受權利保護是最常見的情況。權利是授予您使用某些 API 的能力的權限。在被監禁的設備上,只有系統應用程序可以擁有權利。在越獄設備上,任何應用程序都可以擁有權利。

回到你的問題。 我沒有在 iOS 7 上試過 CoreTelephony。你試過了嗎? (我不確定“如果不是,CoreTelephony 僅對 iOS6 有效?”是否暗示您嘗試過)。

它可能需要com.apple.coretelephony.Identity.get權利。 在首選項應用程序中找到它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM