iOS 個体識別番号(UIDI)は使えません。

日本のモバイル開発現場で活躍してくれた個体識別番号は、ユーザーも便利でしたが開発者も便利でした。しかーし、世界の流れはNOです。

と、いうことで別の方法を考えます。

解決策

色々方法はあるようですが、UUIDを使うことにします。UUIDはユニークであることが保証されているそうです。

  1. 初回起動時UUID生成、Keychainに保存
  2. 2回目以降起動時は、Keychainから呼び出す
  3. あとは、WEBサービスへの認証にUUIDを個体識別番号のように使用する

個体識別番号を書き換えられる脱獄アプリもあるそうです。個体識別番号同様、送信されたUUIDを100%信用しちゃうような設計はしないように気をつけないと。

ヒント

Keychain Service とのやり取りは、LUKeychainAccess が便利です。

 

AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    //UUID
    self.uuid = [[LUKeychainAccess standardKeychainAccess] objectForKey:@"uuid"];
    if(!self.uuid){
        //読み込めなかった場合、UUIDを作成してKeyChainに保存
        CFUUIDRef   uuid = CFUUIDCreate(NULL);
        self.uuid = (__bridge NSString *)CFUUIDCreateString(NULL, uuid);
        CFRelease(uuid);
        [[LUKeychainAccess standardKeychainAccess] setObject:self.uuid forKey:@"uuid"];
    }
    return YES;
}