2010年10月24日日曜日

iPhone / iPodのバージョン判定

iPhoneのバージョン判定を行うには、uname 関数を使います。

使い方はLinuxで使われるシステムコールと同じです。
utsname型の構造体にバージョンの文字列が返るので、それを判定します。




-(BOOL)deviceIsiPhone4OrLater
{
    struct utsname u;
    uname(&u);
    NSString* machine = [NSString stringWithCString:(const char*)u.machine encoding:NSUTF8StringEncoding];
    if ([machine isEqualToString:@"iPhone 1,1"] == YES) {
        // iPhone 1G
        return NO;
    } else if ([machine isEqualToString:@"iPhone1,2"] == YES) {
        // iPhone 3G
        return NO;
    } else if ([machine isEqualToString:@"iPhone2,1"] == YES) {
        // iPhone 3GS
        return NO;
    } else if ([machine isEqualToString:@"iPod1,1"] == YES) {
        // iPod touch 1G
        return NO;
    } else if ([machine isEqualToString:@"iPod2,1"] == YES) {
        // iPod touch 2G
        return NO;
    } else if ([machine isEqualToString:@"iPod3,1"] == YES) {
        // iPod touch Late 2009
        return NO;
    }
  
    return YES;
}

上記の「machine」にiPhoneのバージョンを示す文字列が返ってきます。
私はiPhone 4を持っていないので何という文字列が返るのか確認できませんが、これまでの流れから言うと多分「iPhone 3,1」?とかが返ってくると思います。
(誰か持ってる方いらっしゃいましたら返却文字列を教えてもらえると嬉しいです。)


0 件のコメント:

コメントを投稿