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していただけると励みになりますので
良ければよろしくお願いします
良ければよろしくお願いします