2014-01-05 44 views

回答

0

使用類,您可以確定您的應用程序是在iPod還是iPhone上運行。要獲取此信息,請訪問名爲model的屬性,該屬性將返回iPhone或iPod touch的NSString。但是,有時您需要更多細節,例如iPhone是最新設備,3GS還是另一端,iPod是第一代還是第二代設備?

訪問系統硬件將顯示我們需要做出上述區別的信息。我們將使用一個類別來擴展UIDevice類,方法是將「機器」類型作爲字符串返回。

@interface UIDevice(machine) 
- (NSString *)machine; 
@end 

訪問硬件類型,我們會打電話給在標準C庫中的函數:

sysctlbyname(const char *name, void *oldp, size_t *oldlenp, void *newp, size_t newlen); 

Read more here...

或者

與下面的接口定義開始進口#import <sys/utsname.h>

然後,NSString *deviceName = [Classname myDeviceModel];

+ (NSString*)myDeviceModel 
    { 
    struct utsname deviceInfo; 

    uname(&deviceInfo); 

    NSString *deviceNameTemp = [NSString stringWithCString:deviceInfo.machine encoding:NSUTF8StringEncoding]; 
    NSDictionary *deviceDictionary = 
    @{ 

    //simulators. 
    @"i386":  @"iPhone Simulator", 
    @"x86_64": @"iPad Simulator", 

    //iPhone's. 
    @"iPhone1,1": @"iPhone", 
    @"iPhone1,2": @"iPhone 3G", 
    @"iPhone2,1": @"iPhone 3GS", 
    @"iPhone3,1": @"iPhone 4", 
    @"iPhone3,2": @"iPhone 4(Rev A)", 
    @"iPhone3,3": @"iPhone 4(CDMA)", 
    @"iPhone4,1": @"iPhone 4S", 
    @"iPhone5,1": @"iPhone 5(GSM)", 
    @"iPhone5,2": @"iPhone 5(GSM+CDMA)", 
    @"iPhone5,3": @"iPhone 5c(GSM)", 
    @"iPhone5,4": @"iPhone 5c(GSM+CDMA)", 
    @"iPhone6,1": @"iPhone 5s(GSM)", 
    @"iPhone6,2": @"iPhone 5s(GSM+CDMA)", 

    //iPads. 
    @"iPad1,1": @"iPad", 
    @"iPad2,1": @"iPad 2(WiFi)", 
    @"iPad2,2": @"iPad 2(GSM)", 
    @"iPad2,3": @"iPad 2(CDMA)", 
    @"iPad2,4": @"iPad 2(WiFi Rev A)", 
    @"iPad2,5": @"iPad Mini(WiFi)", 
    @"iPad2,6": @"iPad Mini(GSM)", 
    @"iPad2,7": @"iPad Mini(GSM+CDMA)", 
    @"iPad3,1": @"iPad 3(WiFi)", 
    @"iPad3,2": @"iPad 3(GSM+CDMA)", 
    @"iPad3,3": @"iPad 3(GSM)", 
    @"iPad3,4": @"iPad 4(WiFi)", 
    @"iPad3,5": @"iPad 4(GSM)", 
    @"iPad3,6": @"iPad 4(GSM+CDMA)", 

    //ipods 
    @"iPod1,1": @"iPod 1st Gen", 
    @"iPod2,1": @"iPod 2nd Gen", 
    @"iPod3,1": @"iPod 3rd Gen", 
    @"iPod4,1": @"iPod 4th Gen", 
    @"iPod5,1": @"iPod 5th Gen", 

    }; 

    NSString *deviceName = commonNamesDictionary[deviceNameTemp]; 

    if (deviceName == nil) 
    { 
     deviceName = machineName; 
    } 

    return deviceName; 
} 
+0

謝謝您的回覆,但是我正在尋找任何其他直接API或核心API,而不是這樣的,因爲在未來的新手機來了,那麼我就需要再補充一點,在列表中。 –

+0

然後試試這個庫http://github.com/erica/uidevice-extension/ –