iOS開発で唯一識別されたソリューションのkeyChain+UUID

1502 ワード

まず、UDIDとは何かを調べてみましょう.
UDIDのフルネームはUnique Device Identifier:デバイス固有識別子です.名前からも分かるように、UDIDというものはデバイスに関係しており、デバイスにのみ関係しており、MACアドレスに似ています.UDIDというものをProvisoning Profileライセンスファイルに追加する必要があります.つまり、デバイスの一意の識別子を追加して、あるデバイスを識別する必要があります.
アプリケーション開発において、UDIDはどのような役割を果たすのでしょうか.ある時、バックグラウンドでは、携帯電話ごとに区別するために唯一の標識を伝える必要があります.また、プログラムをアンインストールしてから再インストールしても変更されません.iOS 5以前、アップルはUDIDを直接取得する方法を提供していました.
NSUUID *uuid = [UIDevice currentDevice].identifierForVendor;                                                   
NSLog(@"uuid = %@",uuid.UUIDString);

残念ながらiOS 5以降のバージョンでは、アップルはこれを乾かしました.では、もし私たちがUDIDを使う必要があるならば、唯一の標識で、私たちは何を使って代わりますか.
以下の方法は親測定に有効である.
以下の方法でUUIDを取得する
+ (NSString*) getUUIDString{

    CFUUIDRef uuidObj = CFUUIDCreate(nil);

    NSString *uuidString = (__bridge_transferNSString*)CFUUIDCreateString(nil, uuidObj);

    CFRelease(uuidObj);

    return  uuidString;
}

このUUIDをキーストリング(携帯電話ごとに1つのキーストリングがあり、アプリを削除しても中に保存されているものは削除されません.ただし携帯電話を完全に復元すると削除されます).
+(void)save:(NSString *)service data:(id)data {

    NSMutableDictionary *keychainQuery = [CHLUUID getKeychainQuery:service];

    SecItemDelete((CFDictionaryRef)keychainQuery);

    [keychainQuery setObject:[NSKeyedArchiver archivedDataWithRootObject:data] forKey:(id)kSecValueData];

    SecItemAdd((CFDictionaryRef)keychainQuery,NULL);

}

これにより、アプリケーションが削除され、ダウンロードされてアプリケーションがインストールされても、一意の識別が得られます.楽屋から元のデータをもらいました.
完全なアイテム