2010/01/07

[iPhone sdk][Objective-C]iPhoneかiPod touchかをUIDeviceで判定

今、作っているアプリで、iPhonetの時とiPod touchで処理をわけようかなーっと思っています。

そこで、どうやってプログラムで判定するか調べました。

iPhone 3Gと3GSやiPod touchの世代を判別する方法
iPhone 3Gと3GSやiPod touchの世代を判別する方法 (2)
を見たら、何やらC言語の関数がたくさん使われているようなのですが、以前、iPhone tech talkに参加した時に、もっと簡単なやり方でできたような気がするんだよなーっと、再度、リファレンスを見直したところ、ありました、ありました。

How do I determine whether I'm running on an iPhone or iPod touch?に回答がありました。

なんと、UIDeviceで簡単に取得できちゃうみたいです。

上のリンク先を読みながら以下のように実装しました。

NSString *devicemodel = [UIDevice currentDevice].model;

実際に、Xcodeのシュミレーターで動かしてみると

「iPhone Simulator」

と表示され、実機で試したところ

「iPod touch」

と取得することができました。

そこで、現在動かしているデバイスをフラグで取得するファンクションを作成しました。
int DeviceFlg(void){
//デバイスの情報を取得するクラスを宣言
NSString *devicemodel = [UIDevice currentDevice].model;
devicemodel = [devicemodel lowercaseString];

//iPhoneの場合
if([devicemodel rangeOfString:@"iphone"].length != 0){
return 0;
//iPod touchの場合
}else{
return 1;
}

}

iPhoneの場合は、0を返し、一方で、iPod touchの場合は、1を返すようにしました。

両方の端末で動かしたところ、正常動作。

これで、端末ごとの処理も困らないぞと。

0 コメント:

コメントを投稿