機種判定
デバイスの機種を判定する方法はいくらかあると思いますが、調べるとsysctlbyname関数を使った方法が一般的のようです。機種判定の方法は、今回はカテゴリ機能を持ったUIDeviceクラスを実装して取得する方法で行います。機種判定をするクラスの作成
インターフェース・実装ファイル
UIDevice+HogeHoge.h
#import <UIKit/UIKit.h>
@interface UIDevice (HogeHoge)
- (NSString *) platformName;
@end
UIDevice+HogeHoge.h
#import "UIDevice+HogeHoge.h"
#include <sys/sysctl.h>
@implementation UIDevice (HogeHoge)
/*
以下取得できるプラットフォームコード(左)
*/
/*
Platforms
iFPGA -> ??
iPhone1,1 -> iPhone 1G, M68
iPhone1,2 -> iPhone 3G, N82
iPhone2,1 -> iPhone 3GS, N88
iPhone3,1 -> iPhone 4/AT&T, N89
iPhone3,2 -> iPhone 4/Other Carrier?, ??
iPhone3,3 -> iPhone 4/Verizon, TBD
iPhone4,1 -> (iPhone 4S/GSM), TBD
iPhone4,2 -> (iPhone 4S/CDMA), TBD
iPhone4,3 -> (iPhone 4S/???)
iPhone5,1 -> iPhone Next Gen, TBD
iPhone5,1 -> iPhone Next Gen, TBD
iPhone5,1 -> iPhone Next Gen, TBD
iPod1,1 -> iPod touch 1G, N45
iPod2,1 -> iPod touch 2G, N72
iPod2,2 -> Unknown, ??
iPod3,1 -> iPod touch 3G, N18
iPod4,1 -> iPod touch 4G, N80
// Thanks NSForge
iPad1,1 -> iPad 1G, WiFi and 3G, K48
iPad2,1 -> iPad 2G, WiFi, K93
iPad2,2 -> iPad 2G, GSM 3G, K94
iPad2,3 -> iPad 2G, CDMA 3G, K95
iPad3,1 -> (iPad 3G, WiFi)
iPad3,2 -> (iPad 3G, GSM)
iPad3,3 -> (iPad 3G, CDMA)
iPad4,1 -> (iPad 4G, WiFi)
iPad4,2 -> (iPad 4G, GSM)
iPad4,3 -> (iPad 4G, CDMA)
AppleTV2,1 -> AppleTV 2, K66
AppleTV3,1 -> AppleTV 3, ??
i386, x86_64 -> iPhone Simulator
*/
- (NSString *) platformName
{
size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *machine = malloc(size);
sysctlbyname("hw.machine", machine, &size, NULL, 0);
NSString *platformName = [NSString stringWithCString:machine encoding:NSUTF8StringEncoding];
free(machine);
return platformName;
}
@end
デバイスのプラットフォームコードを返すメソッドをひとつ。プラットフォームコードは参考記事から抜粋しています。
使い方
HugaViewController.m
#import "HugaViewController.h"
#import "UIDevice+DeviceName.h"
:
:
if ([[[UIDevice currentDevice]platformName]hasPrefix:@" iPhone5,1"]) {
NSLog(@"iPhone5");
}else{
/*その他の処理*/
}
ここの部分は実機で試していないので上手くできるのか分かりません。お手数ですがご自分で試してみてください。
おわり
おそらく機種判定はAppDelegateでやるのがよさそうですね。実機で試す環境がまだ整っていないので、環境を整えて近いうちに試してみます。間違いなどありましたら指摘していただけると幸いです。参考記事
端末情報を取得する - CH3COOH(酢酸)の実験室erica/uidevice-extension – GitHub
iPhoneアプリ開発: iPhone 4と3GSと3GやiPod touchの世代を判別する - 情熱とスキルと市場
0 件のコメント:
コメントを投稿