ios获取唯一设备ID的方案

当app或者另外来源于同一开发商的app被安装到同一设备上,这个UUIDString会保持一致。当用户删除掉设备上所有同一开发商的app后,重新安装其中某一个app,这时候所获取到的UUIDString就会发生变化。因此,不管app存储将这个UUID存储到哪里,你都应该手动处理这种改变。

解决方案就是能所生成的UUIDString存储到KeyChain中,使用同一个access group、同一个identifier。每次获取UUID,都先从KeyChain中获取,若为空,则通过UIDevice获取UUIDString并存储到KeyChaing,代码版本如下:

  • (NSString *)UUID {
    KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"DujianchaoAppID" accessGroup:@"com.dujianchao.test.group"];
    NSString *UUID = [wrapper objectForKey:(__bridge id)kSecValueData];

    if (UUID.length == 0) {
    UUID = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
    [wrapper setObject:UUID forKey:(__bridge id)kSecValueData];
    }

    return UUID;
    }

你可能感兴趣的:(ios获取唯一设备ID的方案)