電子趣味の部屋

電子系のガジェットやアプリ開発等の趣味の話題を書いてます

機種の判別法法とOSのバージョンの取得方法

以前も一度書いたエントリーですが、その時不明だった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 アプリケーション開発ガイド

iPhone SDK アプリケーション開発ガイド