目前iOS 获取设备号比较好的方案

2018-01-10  本文已影响0人  Kevin777vip

关于iOS的设备标识,历史上有多个方法,取不同的ID,有些方法已经被苹果禁止,所以现在开发也不需要去看了,广告标识符可能会取不到(用户可以自己去设备设置中关闭,建议关闭,能少收集一个是一个),主要说下目前我认为最好的解决方案

首先说一下最简单的方法,很多公司在用这个,但是有缺陷,就是相同开发商的多个应用返回的值是一样的,除非真的有这种需求,否则不建议用

[[UIDevice currentDevice]identifierForVendor].UUIDString

Apple的注释很清楚

@property(nullable, nonatomic,readonly,strong) 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.

所以这个方法一般不会用,那就用到了CFUUIDRef

+ (NSString *)uuidString
{
    CFUUIDRef uuid_ref = CFUUIDCreate(NULL);
    CFStringRef uuid_string_ref= CFUUIDCreateString(NULL, uuid_ref);
    NSString *uuid = [NSString stringWithString:(__bridge NSString *)uuid_string_ref];
    CFRelease(uuid_ref);
    CFRelease(uuid_string_ref);
    return [uuid lowercaseString];
}

这样生成的uuid会每次变化,所以需要存储,对于存储的方法,建议存在NSUserDefaults或者数据库中,然后同时存到keychain中,每次从NSUserDefaults读取,取不到再去keychain中查找,都没有才生成新的并存储,这样可以保证卸载了app重新安装后设备号还是不变的,但如果重置系统,那就没有办法了,还有一种方法是上传iCloud,但会有很多限制和不确定,所以没有用。但其实iCloud可以做很多事情,大家可以试试。

编辑人:kevin 转载请注明,谢谢

上一篇下一篇

猜你喜欢

热点阅读