以前も一度書いたエントリーですが、その時不明だったiPhone3Gと3GSの判別も分かったので、書き直します。
3GSと3Gを判別する方法を調べてたときの副産物。
環境の判別方法
UIDeviceのプロパティmodelから取得できる。
取得できる値
iPhone, iPod touch, iPhone Simulator
細かい機種判別はできず。
記述例
NSString *modelname = [[UIDevice currentDevice]model]; if ([modelname isEqualToString:@"iPhone"]) { // iPhone } if ([modelname isEqualToString:@"IPod Touch"]) { // iPod touch } if ([modelname isEqualToString:@"iPhone Simulator"]) { // iPhone Simulator }
機種の判別方法
uname関数で取得できます。
取得した構造体のumachine変数に文字列のポイントが格納されます。
取得できる値
"iPhone1,1" iPhone 1G
"iPhone1,2" iPhone 3G
"iPhone2,1" iPhone 3GS
"iPod1,1" iPod touch 1G
"iPod2,1" iPod touch 2G
"iPod3,1" iPod touch Late2009
記述例
struct utsname u; uname(&u); NSString *machine = [NSString stringWithCString:u.machine]; if ([machine isEqualToString:@"iPhone1,1"]) { // iPhone 1G } if ([machine isEqualToString:@"iPhone1,2"]) { // iPhone 3G } if ([machine isEqualToString:@"iPhone2,1"]) { // iPhone 3GS } if ([machine isEqualToString:@"iPod1,1"]) { // iPod touch 1G } if ([machine isEqualToString:@"iPod2,1"]) { // iPod touch 2G } if ([machine isEqualToString:@"iPod3,1"]) { // iPod touch Late2009 }
OSのバージョンの取得
UIDeviceのプロパティsystemVersionから取得できる。
取得できるのはNSString型、"2.2.1"の場合は、"2.2.1"とそのまま取得。数値型ではないので注意!
記述例
NSString *osversion = [UIDevice currentDevice].systemVersion; if ([osversion isEqualToString:@"2.1"]) { // iPhone } if ([osversion isEqualToString:@"2.2.1"]) { // iPod touch } if ([osversion isEqualToString:@"3.0"]) { // iPhone Simulator }
iPhone SDK 3 プログラミング大全 ゲームプログラミング (MacPeople Books)
- 作者:井上 幸喜
- 発売日: 2009/09/19
- メディア: 大型本
- 作者:Jonathan Zdziarski
- 発売日: 2009/09/07
- メディア: 大型本