iPhone/iPad/iPod touch 機種判定、iOSバージョン/ハードウェア情報 取得 判定




最近ユニバーサルアプリを作成する機会があって、
昔利用させてもらった判定文を再度利用する機会があったので
ついでに自分のサイトにも判定色々をまとめておく事にしました。
【機種判定】

NSString *modelname = [ [ UIDevice currentDevice] model];
if([modelname isEqualToString:@"iPhone"])
{
  //iPhone実機
}
else if([modelname isEqualToString:@"iPod touch"])
{
  //iPod touch実機
}
else if([modelname isEqualToString:@"iPad"])
{
  //iPad実機
}
else if([modelname isEqualToString:@"iPhone Simulator"])
{
  //iPhone and iPad Simulator
}

シミュレータまでちゃんと判別できます。便利ですね。


【OSバージョン判定】


NSArray *versionArray = [ [ [ UIDevice currentDevice]systemVersion]componentsSeparatedByString:@"."];
int majorVersion = [ [ versionArray objectAtIndex:0]intValue];
int minorVersion = [ [ versionArray objectAtIndex:1]intValue];
NSLog(@"VERSION %d.%d",majorVersion,minorVersion);

動画機能やバックグランド等、iOS4.0以降から変わってる部分が結構あるので
その切り分けの時に使ったりします。

if(majorVersion > 3)
{
  // 4.0処理
}
else
{
  // 以前の処理
}
みたいな感じですね。


【ハードウェア判定】


- (NSString *) platform
{
  size_t size;
  sysctlbyname("hw.machine", NULL, &size, NULL, 0);
  char *machine = malloc(size);
  sysctlbyname("hw.machine", machine, &size, NULL, 0);
  /*
  Possible values:
  "i386" = iPhone Simulator // add
  "iPhone1,1" = iPhone 1G
  "iPhone1,2" = iPhone 3G
  "iPhone2,1" = iPhone 3GS
  "iPhone3,1" = iPhone 4 // add
  "iPod1,1" = iPod touch 1G
  "iPod2,1" = iPod touch 2G
  "iPod3,1" = iPod touch 3G // add
  "iPod4,1" = iPod touch 4G // add
  */
  //NSString *platform = [NSString stringWithCString: machine ];
  NSString *platform = [NSString stringWithCString: machine encoding:NSUTF8StringEncoding];
  free(machine);
  return platform;
}

ライブラリ関数 sysctlbynameを使ってハードウェア情報を
最終的には文字列で取得しています。
platformにはコメントタグ内に該当する文字列が入ります。
上記の参考には
http://www.clintharris.net/2009/iphone-model-via-sysctlbyname/
IPHONE DEVELOPER TIPS – Just another WordPress site
を参考にしました。
ハードウェア判定は、解像度の違う画像処理を
判別したりする等の際に使用する事があったりすると思います。





Shareしていただけると励みになりますので
良ければよろしくお願いします