4

重複の可能性:
iPhone/iPod デバイスのモデル (3G、3GS、4、4S) をコードで調べるには?
デバイスの種類を検出する

プログラムでiPhoneのモデル(3g、4s、5)を特定したい。

では、どうすれば見つけられますか?

4

6 に答える 6

12

以下の条件で、iPhone 3gs-4s、iphone5、および iPad を簡単に検出できます。

 if([[UIDevice currentDevice]userInterfaceIdiom]==UIUserInterfaceIdiomPhone)
 {
     if ([[UIScreen mainScreen] bounds].size.height == 568)
     {

          //iphone 5
     }
     else
     {
         //iphone 3.5 inch screen iphone 3g,4s 
     }
 }
 else
 {
        //[ipad]
 }

このDetect device typeで私の回答にアクセスしてください

于 2012-12-26T09:19:10.843 に答える
6

次のコードを使用してください

#import <sys/utsname.h>

NSString* machineName()
{
    struct utsname systemInfo;
    uname(&systemInfo);

    return [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
}

次のコードを使用してデバイスの種類を識別します

if([machineName() isEqualToString:@"iPhone1,2"])
{
    deviceType = @"iPhone 3G";
}
else if([machineName() isEqualToString:@"iPhone2,1"])
{
    deviceType = @"iPhone 3GS";
}
else if([machineName() isEqualToString:@"iPhone3,1"] || [machineName() isEqualToString:@"iPhone3,2"] || [machineName() isEqualToString:@"iPhone3,3"])
{
    deviceType = @"iPhone 4";
}
else if([machineName() isEqualToString:@"iPhone4,1"])
{
    deviceType = @"iPhone 4S";
}
else if([machineName() isEqualToString:@"iPhone5,1"])
{
    deviceType = @"iPhone 5";
}
else if([machineName() isEqualToString:@"iPod1,1"])
{
    deviceType = @"iPod Touch 1G";
}
else if([machineName() isEqualToString:@"iPod2,1"] || [machineName() isEqualToString:@"iPod2,2"])
{
    deviceType = @"iPod Touch 2G";
}
else if([machineName() isEqualToString:@"iPod3,1"])
{
    deviceType = @"iPod Touch 3G";
}
else if([machineName() isEqualToString:@"iPod4,1"])
{
    deviceType = @"iPod Touch 4G";
}
else if([machineName() isEqualToString:@"iPod5,1"])
{
    deviceType = @"iPod Touch 5G";
}
于 2012-12-26T09:30:04.553 に答える
4

Erica Sadunによる UIDevice (ハードウェア) カテゴリを使用できます

次のように使用できます。

[[UIDevice currentDevice] platformType]   // ex: UIDevice4GiPhone

[[UIDevice currentDevice] platformString] // ex: @"iPhone 4G"
于 2012-12-26T09:16:07.217 に答える
2

これには次のコードを使用できます。

NSString *device()
{
    struct utsname devInfo;
    uname(&devInfo);

    return [NSString stringWithCString:devInfo.machine encoding:NSUTF8StringEncoding];
}

必ずインポートしてください #import <sys/utsname.h>

于 2012-12-26T09:24:12.377 に答える
1

こんにちは、以下のコードを使用してください

[UIDevice currentDevice] platformType]   // returns UIDevice4GiPhone
[[UIDevice currentDevice] platformString] // returns @"iPhone 4G"

またはratinaをチェックしてください

+ (BOOL) isRetina
{
    if([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
        return [[UIScreen mainScreen] scale] == 2.0 ? YES : NO;

    return NO;
}

またはiosのバージョンを確認してください

   + (BOOL) isIOS5
    {
        NSString *os5 = @"5.0";
        NSString *currSysVer = [[UIDevice currentDevice] systemVersion];

        //    currSysVer = @"5.0.1";
        if ([currSysVer compare:os5 options:NSNumericSearch] == NSOrderedAscending) //lower than 4
        {
            return NO;
        }
        else if ([currSysVer compare:os5 options:NSNumericSearch] == NSOrderedDescending) //5.0.1 and above
        {        
            return YES;
        }
        else // IOS 5
        {
            return YES;
        }

        return NO;
    }
于 2012-12-26T09:21:16.513 に答える
0

これらはuidevice-extensionを使用して取得でき ます。必要なのは次の関数です。

- (NSString *) platform;
- (NSString *) hwmodel;
- (NSUInteger) platformType;
- (NSString *) platformString;

UIDevice-Hardware.h から

于 2012-12-26T09:19:20.513 に答える