酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

iOSで端末情報を取得する

本記事は「端末情報(デバイス情報)を取得する - 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