知っておくとちょっと得かもしれないメモ

一つの独立したエントリーにするほど立派なモノじゃないけれども、開発中に調べたことの足跡を残しときます.

ま、おやつ感覚でどうぞ.

バンドルのバージョンを取得する

Info.plist の"Bundle version"の欄に、アプリケーションのバージョン番号を記述しますが、アプリ側でもその表示を利用したい
ということは、結構あると思います.

取得の方法は簡単で、次のようにするだけです.

const char* GetVersionStr()
{
    NSString* a_version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
    const char* a_v = [a_version cStringUsingEncoding:NSUTF16LittleEndianStringEncoding];

    return a_v;
}

私は、ObjectiveC での開発がなれなかったので、基本部分はほぼ c++ で書いていたため、cstring に変換して利用しました.

バイスで設定されている言語設定の取得

ローカライズなんかは、多言語対応用に Localizable.strings ファイルを用意すれば、デバイスで設定されている言語設定を
元に文字列を取り出せるようですが、諸々の事情により自前で多言語対応を行いたいということもままあると思います.

こんなときは、次のようにデバイスで設定されている言語を取得することができます.

/// デバイスで設定されている言語設定の取得
ELangId GetDeviceLanguage()
{
    NSArray* a_Languages = [NSLocale preferredLanguages];
    NSString* a_CurrentLanguage = [a_Languages objectAtIndex:0];

    if( [a_CurrentLanguage isEqualToString:@"ja"] ){
        return kLangId_Japanese;
    }else if( [a_CurrentLanguage isEqualToString:@"fr"] ){
        return kLangId_French;
    }else if( [a_CurrentLanguage isEqualToString:@"it"] ){
        return kLangId_Italian;
    }else if( [a_CurrentLanguage isEqualToString:@"de"] ){
        return kLangId_German;
    }else if( [a_CurrentLanguage isEqualToString:@"es"] ){
        return kLangId_Spanish;
    }

    return kLangId_English;
}

比較する文字列は、ISO-639(http://ja.wikipedia.org/wiki/ISO_639)の省略形を用いるようです.

OS のバージョンを取得する

RemoteIO の実装をしているとき、SDK2.x と SDK3.x で実装方法が異なっていたので、「OSのバージョンを判断して条件分岐すれば管理が楽じゃね?」
なんてことを考えて、バージョンの取得方法を調べてみたんですけど、違いは利用する SDK によって実装方法が異なるってだけで、OSのバージョンは
関係なかったので、利用しませんでした.

ま、なにかの役に立つかもしれないので、足跡だけでも残しておきます.

s32 CheckMajorVersion()
{
    NSArray* versions = [[[UIDevice currentDevice]systemVersion] componentsSeparatedByString:@"."];  
    NSString* major = (NSString*)[versions objectAtIndex:0]; // 3  
    NSString* minor = (NSString*)[versions objectAtIndex:1]; // 0  
    return [major intValue];
}

おわりに

...飽たので、今日のところはこの辺りで終わりにします.
もう少し細かなネタが残っているはずなので、気が向いたらまた書いてみるかもしれません.