本記事は「端末情報(デバイス情報)を取得する - iOSアプリ開発の逆引き辞典」に転記しました。プラットフォームコードと製品名とのマッピング表はリンク先の記事の方が最新となっています。
iPadだったらこうするiPhoneだったらこうする。はたまた、iPhone 4は良いがiPhone 3GとiPod touch 2Gはメモリが少ないのでこの機能をドロップするなど、端末のモデルによってあれしたいこれしたいという事が多々あると思います。
端末情報を取得する方法についてご紹介したいと思います。
iOSのバージョンを取得する
NSString* sysVersion = [[UIDevice currentDevice] systemVersion];
モデルを取得する
NSString* model = [[UIDevice currentDevice] model];
プラットフォームを取得する
sysctlbyname関数でプラットフォーム情報を取得します。
#include <sys/types.h> #include <sys/sysctl.h> - (NSString *) platform { size_t size; sysctlbyname("hw.machine", NULL, &size, NULL, 0); char *machine = malloc(size); sysctlbyname("hw.machine", machine, &size, NULL, 0); NSString *platform = [NSString stringWithCString:machine encoding:NSUTF8StringEncoding]; free(machine); return platform; }
取得出来るプラットフォーム情報は、以下の製品とマッピングされています。
プラットフォームコード | 製品名 |
iPhone1,1 | iPhone 1G |
iPhone1,2 | iPhone 3G |
iPhone2,1 | iPhone 3GS |
iPhone3,1 | iPhone 4/AT&T |
iPhone3,2 | iPhone 4/Other Carrier? |
iPhone3,3 | iPhone 4/Other Carrier? |
iPhone4,1 | ??iPhone 5 |
iPod1,1 | iPod touch 1G |
iPod2,1 | iPod touch 2G |
iPod2,2 | ??iPod touch 2.5G |
iPod3,1 | iPod touch 3G |
iPod4,1 | iPod touch 4G |
iPod5,1 | ??iPod touch 5G |
iPad1,1 | iPad 1G, WiFi |
iPad2,1 | iPad 2G (iProd 2,1) |
AppleTV2,1 | AppleTV 2 |
i386, x86_64 | iPhone Simulator |