UDIDを使わずにUUIDを使う

UDIDを使わずにUUIDを使う新しいブログを作ってまだ記事も無いので、試しに一つ書いてみようと思います。

もう古い話題ですが、UDIDを使わずにUUIDを使う方法です。調べれば良さげな記事がネットにいくつか出てくるので、簡単に。

まずは結論から。

- (NSString*) generateUUID
{
    // Create a new UUID
    CFUUIDRef uuidObj = CFUUIDCreate(nil);
    // Get the string representation of the UUID
    NSString *uuidString = (NSString*)CFUUIDCreateString(nil, uuidObj);
    CFRelease(uuidObj);
    return [uuidString autorelease];
}

こんな感じで生成できます。その都度書けばよいかも知れませんが、CF…を使った書き方に慣れていないので、githubの練習がてらNSObjectを継承した専用のクラスを作ってみました。

MZRUUID – github

いくつかのサイトで簡単に情報収集はできますが、UDIDとUUIDが簡潔でわかりやすかったです。僕が使っているコードもほぼ同じようになっています。

一意に端末が指定できるUDIDと違って、UUIDは単に重複の無いランダムな文字列を取得できるだけなのですが、できるだけUUIDと同じように使いたいという場合は以下のようなコードになると思います。

 // Use device unique ID
    NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
    NSString *deviceuid;
    if ([ud objectForKey:@"uuid"]) {
        deviceuid = [ud objectForKey:@"uuid"];
    } else {
        deviceuid = [self generateUUID];

        [ud setObject:deviceuid forKey:@"uuid"];
        [ud synchronize];
    }

アプリを削除した後、再度生成すると違った値が設定されるというのはUDIDと異なる点でしょうね。

ちなみにgithubに上げたファイルでは専用のクラスを作成しています。この辺りに詳しくない方はコメント頂ければ解説します。

リンクのgithubからはファイルをDLして、MZRUUID.hとMZRUUID.mをXcodeにAdd Files… して、

#import "MZRUUID.h"

このようにインポートするとUUID生成専用のクラスが使えるようになります。

あぁ、誰に向けて書いているのかわからない記事になってしまった(汗

ちなみにブログ中にObjective-Cのコードをわかりやすく記入していますが、これはWordpressのWP SyntaxHighLighterというプラグインを使っています。WordPressでObjective-Cのコードを綺麗に表示する方法が大変参考になりました。このブログに書かれている方法そのままで上記書体を利用することが可能です。

この記事は練習ということで。いい記事を書けるようになろう!では。

Pocket
LINEで送る

You may also like...