如何检测特定的iPhone / iPod touch模型?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (36)

我正在制作一款利用iPhone的点对点蓝牙功能(可能是iPod touch第二代)的游戏。但是,要阻止用户尝试在iPod 1st Gen和iPhone 2G上播放多人游戏,我需要检查特定设备型号。

[[UIDevice currentDevice]型号]只会告诉我该设备是“iPhone”还是“iPod touch”。有没有办法检查特定的设备型号,如:“iPhone 3GS”,“iPod touch第一代”等。

提问于
用户回答回答于

最完整的UIDevice(硬件)类别可能是http://github.com/Erica/uidevice--EXTENSION

[[UIDevice currentDevice] platformType]   // ex: UIDevice4GiPhone
[[UIDevice currentDevice] platformString] // ex: @"iPhone 4G"
用户回答回答于

你可以使用unamesys/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

扫码关注云+社区

领取腾讯云代金券