唯一标识首页投稿(暂停使用,暂停投稿)程序员

UDID替代方案--KeyChain

2016-04-19  本文已影响505人  尹_路人

author: yongqian
date: 2014-11-13
iOS5.0之后,苹果禁止开发者获取UDID了,但是没有什么事能难倒我们程序猿,我们总能找到各种方法达到唯一标识一个设备的方法,例如本文要讲的--使用keychain存储UUID替代UDID

UDID

UDID (即Unique Device Identifier)是一个由子母和数字组成的 40 个字符串的序号,用来区别包括 iPhones, iPads, 以及 iPod Touches等iOS设备,这些编码看起来是随机的,实际上是跟硬件设备特点相联系的。

使用keyChain存储UUID替代UDID

使用

#import "CommonCrypto/CommonDigest.h"
#import "JPKeychain.h"

NSString * const KEY_UDID_INSTEAD = @"com.jpgk.app.udid.instead.test";


#pragma mark - Keychain 获取UUID
+(NSString *)getDeviceIDInKeychain
{
    NSString *getUDIDInKeychain = (NSString *)[JPKeychain load:KEY_UDID_INSTEAD];
    NSLog(@"从keychain中获取到的 UDID_INSTEAD %@",getUDIDInKeychain);
    if (!getUDIDInKeychain ||[getUDIDInKeychain isEqualToString:@""]||[getUDIDInKeychain isKindOfClass:[NSNull class]]) {
        CFUUIDRef puuid = CFUUIDCreate( nil );
        CFStringRef uuidString = CFUUIDCreateString( nil, puuid );
        NSString * result = (NSString *)CFBridgingRelease(CFStringCreateCopy( NULL, uuidString));
        CFRelease(puuid);
        CFRelease(uuidString);
        [JPKeychain save:KEY_UDID_INSTEAD data:result];
        getUDIDInKeychain = (NSString *)[JPKeychain load:KEY_UDID_INSTEAD];
    }
    NSLog(@"最终 ———— UDID_INSTEAD %@",getUDIDInKeychain);
    return getUDIDInKeychain;
}

更新 ------------

由此联想到是否可以保存用户名、密码之类的数据,用户即使卸载应用,下次安装后也可以提示用户是否允许从本地读取用户名密码用来登录,感兴趣的同学可以试一试。。。。。。

上一篇下一篇

猜你喜欢

热点阅读