Обнаружьте определенную модель iPhone/iPod touch [дубликат]

Октябрь 2008:

я рекомендовал бы кэшировать его в статической переменной:

public static final class OsUtils
{
   private static String OS = null;
   public static String getOsName()
   {
      if(OS == null) { OS = System.getProperty("os.name"); }
      return OS;
   }
   public static boolean isWindows()
   {
      return getOsName().startsWith("Windows");
   }

   public static boolean isUnix() // and so on
}

Тот путь, каждый раз, когда Вы просите OS, Вы не выбираете свойство несколько раз во время жизни Вашего приложения.

февраль 2016: 7 + несколько лет спустя:

существует ошибка с Windows 10 (который не существовал во время исходного ответа).
См." “os.name” Java для Windows 10? "

106
задан Cœur 20 April 2019 в 12:42
поделиться

2 ответа

Наиболее полная категория UIDevice (оборудование), вероятно, это http://github.com/erica/uidevice-extension/ (Эрика Садун):

[[UIDevice currentDevice] platformType]   // ex: UIDevice4GiPhone
[[UIDevice currentDevice] platformString] // ex: @"iPhone 4G"
65
ответ дан 24 November 2019 в 03:49
поделиться

Вы можете получить номер модели устройства, используя uname из sys / utsname.h . Например:

#import <sys/utsname.h>

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

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

Результат должен быть следующим:

@"i386"      on the simulator
@"iPod1,1"   on iPod Touch
@"iPod2,1"   on iPod Touch Second Generation
@"iPod3,1"   on iPod Touch Third Generation
@"iPod4,1"   on iPod Touch Fourth Generation
@"iPhone1,1" on iPhone
@"iPhone1,2" on iPhone 3G
@"iPhone2,1" on iPhone 3GS
@"iPad1,1"   on iPad
@"iPad2,1"   on iPad 2
@"iPad3,1"   on iPad 3 (aka new iPad)
@"iPhone3,1" on iPhone 4
@"iPhone4,1" on iPhone 4S
@"iPhone5,1" on iPhone 5
@"iPhone5,2" on iPhone 5
152
ответ дан 24 November 2019 в 03:49
поделиться