taoru's memo

Objective-c,cocos2d,など開発についてのメモ(andoroidも少しだけ)

複数アプリ間で同一IDを取得する

記事のタイトルつけるセンスが無い(切実)

アプリAとアプリBをタオル株式会社(仮)がリリースしたとして、
アプリAとアプリBを同時にやってくれているユーザーにインセンティブあげたい!という場合に
ユーザーを特定するための同一IDの取得が必要になる。

UUIDではアプリごとにユニークなIDになってしまうけど、開発元と端末からユニークIDを生成してくれるものがあった。
つまり、アプリAとアプリBで同じIDが取得できる!(ただし同開発元に限る)

UIDevice.h

@property(nonatomic,readonly,retain) NSUUID *identifierForVendor NS_AVAILABLE_IOS(6_0);      // a UUID that may be used to uniquely identify the device, same across apps from a single vendor.

iOS6.0以降でしか利用できないが、identifierForVenderというのが定義されている。
UIDeviceで定義されているので、以下のようにしてUUIDと同じように取得できる。

NSUUID *ideForVender = [UIDevice currentDevice].identifierForVender;
NSString *idForVenderString = [identifierForVender UUIDString];

NSUUIDをalloc initするよりちょっとだけ簡単だし、同じ会社で出してて別のIDがどうしても必要!っていうことも少なそうだから、identifierForVender使っておけばいいなじゃないかな!

iOS6.0未満はもう1割くらいしかいないらしいので、いいんじゃないかな。

追記 20130717(水)

アプリAとアプリBの認証にidentifierForVenderを使っている場合、
アプリAを1からやり直したい!と思ってアプリAを削除→再インストールしたとしても、
端末内にアプリAと同じ開発元のアプリBが残っていると、同じIDになってしまう。

データが消せない!などの弊害になりかねない感じ。

認証はUUIDを利用し、連携アプリをプレイしているかどうかのチェックのために
identifierForVenderも併用する感じがいいのかな?

参考 : デジタル・アイデンティティ技術最新動向(5):UDIDにおけるセキュリティ&プライバシー問題 (2/2)

QLOOKアクセス解析