2013-08-24 69 views
3

我在尋找最官方的源來完成/維持這種方法:如何識別「hw.machine」標識符是否可靠?

-(NSString*)platformString 
{ 
    NSString *platform = [self platform]; 

    if ([platform isEqualToString:@"iPhone1,1"]) return @"iPhone 1G"; 
    if ([platform isEqualToString:@"iPhone1,2"]) return @"iPhone 3G"; 
    if ([platform isEqualToString:@"iPhone2,1"]) return @"iPhone 3GS"; 

    if ([platform isEqualToString:@"iPhone3,1"]) return @"iPhone 4"; 
    if ([platform isEqualToString:@"iPhone3,2"]) return @"iPhone 4 (Other Carrier)"; 
    if ([platform isEqualToString:@"iPhone3,3"]) return @"iPhone 4 CDMA"; 
    if ([platform isEqualToString:@"iPhone4,1"]) return @"iPhone 4S"; 

    if ([platform isEqualToString:@"iPhone5,1"]) return @"iPhone 5"; 

    if ([platform isEqualToString:@"iPod1,1"])  return @"iPod Touch 1G"; 
    if ([platform isEqualToString:@"iPod2,1"])  return @"iPod Touch 2G"; 
    if ([platform isEqualToString:@"iPod3,1"])  return @"iPod Touch 3G"; 
    if ([platform isEqualToString:@"iPod4,1"])  return @"iPod Touch 4G"; 
    if ([platform isEqualToString:@"iPod5,1"])  return @"iPod Touch 5G"; 

    if ([platform isEqualToString:@"iPad1,1"])  return @"iPad"; 

    if ([platform isEqualToString:@"iPad2,1"])  return @"iPad 2 WiFi"; 
    if ([platform isEqualToString:@"iPad2,2"])  return @"iPad 2 GSM"; 
    if ([platform isEqualToString:@"iPad2,3"])  return @"iPad 2 CDMA"; 
    if ([platform isEqualToString:@"iPad2,4"])  return @"iPad 2 CDMAS"; 
    if ([platform isEqualToString:@"iPad2,5"])  return @"iPad Mini Wifi"; 
    if ([platform isEqualToString:@"iPad2,6"])  return @"iPad mini (Cellular ATT)"; 
    if ([platform isEqualToString:@"iPad2,7"])  return @"iPad mini (Cellular Verizon)"; 

    if ([platform isEqualToString:@"iPad3,1"])  return @"iPad 3 WiFi"; 
    if ([platform isEqualToString:@"iPad3,2"])  return @"iPad 3 CDMA"; 
    if ([platform isEqualToString:@"iPad3,3"])  return @"iPad 3 GSM"; 
    if ([platform isEqualToString:@"iPad3,4"])  return @"iPad 4 Wifi"; 
    if ([platform isEqualToString:@"iPad3,5"])  return @"iPad 3 (Cellular ATT)"; 
    if ([platform isEqualToString:@"iPad3,6"])  return @"iPad 3 (Cellular Verizon)"; 

    if ([platform isEqualToString:@"iPad4,1"])  return @"iPad 4 WiFi"; 
    if ([platform isEqualToString:@"iPad4,2"])  return @"iPad 4 GSM"; 
    if ([platform isEqualToString:@"iPad4,3"])  return @"iPad 4 CDMA"; 

    if ([platform isEqualToString:@"i386"])   return @"Simulator"; 
    if ([platform isEqualToString:@"x86_64"])  return @"Simulator"; 

    return [NSString stringWithFormat:@"Unknown: %@", platform]; 
} 

蘋果是否有關於這個地方的一些說法?

還是一個體面的研究的explorous人?


佛澄清,我正在使用此代碼引擎蓋下:

-(NSString*)getSysInfoByName:(char*) typeSpecifier 
{ 
    size_t size; 
    sysctlbyname(typeSpecifier, NULL, &size, NULL, 0); 

    char *answer = malloc(size); 
    sysctlbyname(typeSpecifier, answer, &size, NULL, 0); 

    NSString *results = [NSString stringWithCString:answer encoding: NSUTF8StringEncoding]; 

    free(answer); 
    return results; 
} 

-(NSString*)platform 
{ return [self getSysInfoByName:"hw.machine"]; } 
+0

我不會考慮這個話題。 – Geri

+0

注意事項 - 如果您爲這些值創建字典(代碼或plist)而不是具有49個'if'語句,那將更容易。 – rmaddy

+0

這沒有什麼官方的。你在其他人的擺佈下隨着他們的變化提供這些細節。 – rmaddy

回答

7

到目前爲止,我已經找到了一些非官方消息:

Models - The iPhone Wiki

iClarified - iPhone - Where To Download iPhone Firmware Files From

iClarified - iPad - Where To Download iPad Firmware Files From

iClarified - iPod touch - Where to Download iPod touch Firmware Files From

儘管如此,仍在尋找更多官方消息來源。


從iPhone維基(截至iPhone 5S,iPad的空氣)只是提取:

-(NSDictionary*)deviceModelDataForMachineIDs 
{ 
    return @{ 

     //iPad. 
     @"iPad1,1" : @[ @"iPad 1G", @"Wi-Fi/GSM", @"A1219/A1337" ], 
     @"iPad2,1" : @[ @"iPad 2", @"Wi-Fi", @"A1395" ], 
     @"iPad2,2" : @[ @"iPad 2", @"GSM", @"A1396" ], 
     @"iPad2,3" : @[ @"iPad 2", @"CDMA", @"A1397" ], 
     @"iPad2,4" : @[ @"iPad 2", @"Wi-Fi Rev A", @"A1395" ], 
     @"iPad2,5" : @[ @"iPad mini", @"Wi-Fi", @"A1432" ], 
     @"iPad2,6" : @[ @"iPad mini", @"GSM", @"A1454" ], 
     @"iPad2,7" : @[ @"iPad mini", @"GSM+CDMA", @"A1455" ], 
     @"iPad3,1" : @[ @"iPad 3", @"Wi-Fi", @"A1416" ], 
     @"iPad3,2" : @[ @"iPad 3", @"GSM+CDMA", @"A1403" ], 
     @"iPad3,3" : @[ @"iPad 3", @"GSM", @"A1430" ], 
     @"iPad3,4" : @[ @"iPad 4", @"Wi-Fi", @"A1458" ], 
     @"iPad3,5" : @[ @"iPad 4", @"GSM", @"A1459" ], 
     @"iPad3,6" : @[ @"iPad 4", @"GSM+CDMA", @"A1460" ], 
     @"iPad4,1" : @[ @"iPad Air", @"Wi‑Fi", @"A1474" ], 
     @"iPad4,2" : @[ @"iPad Air", @"Cellular", @"A1475" ], 
     @"iPad4,4" : @[ @"iPad mini 2", @"Wi‑Fi", @"A1489" ], 
     @"iPad4,5" : @[ @"iPad mini 2", @"Cellular", @"A1517" ], 
     @"iPad4,6" : @[ @"iPad mini 2", @"N/A", @"A1491" ], 
     @"iPad4,7" : @[ @"iPad mini 3", @"N/A", @"A1599" ], 
     @"iPad4,8" : @[ @"iPad mini 3", @"N/A", @"A1600" ], 
     @"iPad4,9" : @[ @"iPad mini 3", @"N/A", @"A1601" ], 
     @"iPad5,3" : @[ @"iPad Air 2", @"N/A", @"A1566" ], 
     @"iPad5,4" : @[ @"iPad Air 2", @"N/A", @"A1567" ], 

     //iPhone. 
     @"iPhone1,1" : @[ @"iPhone 2G", @"GSM", @"A1203" ], 
     @"iPhone1,2" : @[ @"iPhone 3G", @"GSM", @"A1241/A13241" ], 
     @"iPhone2,1" : @[ @"iPhone 3GS", @"GSM", @"A1303/A13251" ], 
     @"iPhone3,1" : @[ @"iPhone 4", @"GSM", @"A1332" ], 
     @"iPhone3,2" : @[ @"iPhone 4", @"GSM Rev A", @"-" ], 
     @"iPhone3,3" : @[ @"iPhone 4", @"CDMA", @"A1349" ], 
     @"iPhone4,1" : @[ @"iPhone 4S", @"GSM+CDMA", @"A1387/A14311" ], 
     @"iPhone5,1" : @[ @"iPhone 5", @"GSM", @"A1428" ], 
     @"iPhone5,2" : @[ @"iPhone 5", @"GSM+CDMA", @"A1429/A14421" ], 
     @"iPhone5,3" : @[ @"iPhone 5C", @"GSM", @"A1456/A1532" ], 
     @"iPhone5,4" : @[ @"iPhone 5C", @"Global", @"A1507/A1516/A1526/A1529" ], 
     @"iPhone6,1" : @[ @"iPhone 5S", @"GSM", @"A1433/A1533" ], 
     @"iPhone6,2" : @[ @"iPhone 5S", @"Global", @"A1457/A1518/A1528/A1530" ], 
     @"iPhone7,2" : @[ @"iPhone 6", @"N/A", @"A1549/A1586" ], 
     @"iPhone7,1" : @[ @"iPhone 6 Plus", @"N/A", @"A1522/A1524" ], 

     //iPod. 
     @"iPod1,1" : @[ @"iPod touch 1G", @"-", @"A1213" ], 
     @"iPod2,1" : @[ @"iPod touch 2G", @"-", @"A1288" ], 
     @"iPod3,1" : @[ @"iPod touch 3G", @"-", @"A1318" ], 
     @"iPod4,1" : @[ @"iPod touch 4G", @"-", @"A1367" ], 
     @"iPod5,1" : @[ @"iPod touch 5G", @"-", @"A1421/A1509" ] 

    }; 
} 

現在是與代碼的其餘部分沿eppz!kit on GitHub一部分。在EPPZDevice.h類中實現。

+0

無論如何要9月5日改變。 :) – Geri

+0

用新設備更新。 – Geri

+0

更多更新... – Geri

4

iOS設備都在問下面的Apple頁面更新包:

http://mesu.apple.com/assets/com_apple_MobileAsset_SoftwareUpdate/com_apple_MobileAsset_SoftwareUpdate.xml

這個XML包含像 「iPhone6,1」, 「iPhone5,3」 標識符值 「SupportedDevices」 鍵。 「模式」鍵印在iOS設備的背面或者你可以找到他們對蘋果的網頁如:

http://www.apple.com/legal/rfexposure/iphone5,4/cs/

蘋果還更新其支持頁面所有型號: http://support.apple.com/kb/ht3939

+0

XML很棒。雖然它不適用於第三方,但我的意思是它是變化的主題。無論如何檢查的重要來源。 – Geri