• 设备唯一标识符 UDID,UUID, IDFA,IDFV,


    一、UDID:

    UDID的全称是Unique Device Identifier,是苹果IOS设备的唯一识别码,它由40个字符的字母和数字组成。在很多需要限制一台设备一个账号的应用中经常会用到。在iOS5中可以获取到设备的UDID,后来被苹果禁止了。

    备注:

    代码不让获取

    获取UDID的几种方法:

    1、Xcode

    手机连接电脑后,打开Xcode,然后选择window-->Device and Simulator-->Device
    选中自己的手机,就能看到信息,"Identifier"这一栏,便是UDID。

    2、蒲公英

    https://www.pgyer.com/tools/udid
    点击上面链接,扫描二维码,会提示安装一个描述文件,点击安装之后,就会在浏览器中显示出设备信息。长按复制"设备信息UDID"下面的值,就是UDID了。

    二、UUID:

    UUID是Universally Unique Identifier的缩写,中文意思是通用唯一识别码。它是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。这样,每个人都可以建立不与其它人冲突的UUID。在此情况下,就不需考虑数据库建立时的名称重复问题。苹果公司建议使用UUID为应用生成唯一标识字符串。

    开发者可以在应用第一次启动时调用一次,然后将该串存储起来,替代UDID来使用。使用UUID,就要考虑应用被删除后再重新安装时的处理。一个解决的办法是:UUID一般只生成一次,通过    KeyChain 钥匙串保存在iOS系统里面,如果应用删除了,重装应用之后它的UUID还是一样的,除非系统重置。但是不能保证在以后的系统升级后还能用(如果系统保存了该信息就能用)。

    /// 获取设备 UUID
    +(NSString*)createUUID
    {
        CFUUIDRef puuid = CFUUIDCreate( nil );
        CFStringRef uuidString = CFUUIDCreateString( nil, puuid );
        NSString * uuid = (NSString *)CFBridgingRelease(CFStringCreateCopy( NULL, uuidString));
        CFRelease(puuid);
        CFRelease(uuidString);
    
        return uuid;
    }

    备注:

    不同的应用不同的uuid,

    还原设备,uuid变化

    卸载重装,uuid不变

    如果iPhone系统升级,导致存储路径变化,uuid可能会变化

    三、IDFAidentifierForIdentifier

    广告标示符,适用于对外:例如广告推广,换量等跨应用的用户追踪等。是iOS6中另外一个新的方法,提供了一个方法advertisingIdentifier,通过调用该方法会返回一个NSUUID实例,最后可以获得一个UUID,由系统存储着的。不过即使这是由系统存储的,但是有几种情况下,会重新生成广告标示符。如果用户完全重置系统((设置程序-> 通用 -> 还原 -> 还原位置与隐私) ,这个广告标示符会重新生成。另外如果用户明确的还原广告(设置程序->通用 -> 关于本机 -> 广告 -> 还原广告标示符),那么广告标示符也会重新生成。关于广告标示符的还原,有一点需要注意:如果程序在后台运行,此时用户“还原广告标示符”,然后再回到程序中,此时获取广告标示符并不会立即获得还原后的标示符。必须要终止程序,然后再重新启动程序,才能获得还原后的广告标示符。

    在同一个设备上的所有App都会取到相同的值,是苹果专门给各广告提供商用来追踪用户而设的,用户可以在 设置|隐私|广告追踪 里重置此id的值,或限制此id的使用,故此id有可能会取不到值,但好在Apple默认是允许追踪的,而且一般用户都不知道有这么个设置,所以基本上用来监测推广效果,是戳戳有余了。

    注意:由于idfa会出现取不到的情况,故绝不可以作为业务分析的主id,来识别用户。

    ios14的 idfa 是默认关闭的,当然你可以打开。美国99%的用户选择不会分享 idfa。这对数字媒体平台的广告精准发布是个大障碍,用户画像更将模糊。对用户来说,你的数字设备上收到的个性化广告或相关性广告将变得少得多。

    代码:

    #import <AdSupport/AdSupport.h>
    
    NSString *adId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];

    备注:

    还原设备,idfa变化 (设置程序 -> 通用 -> 还原 -> 还原位置与隐私)

    还原广告标识符,idfa变化 (设置程序-> 通用 -> 关于本机 -> 广告 -> 还原广告标示符)

    在隐私-Apple广告-个性化广告中,iOS14以上默认是关闭的,所以取不到idfa

    idfa可能会取不到值 

    每个设备只有一个IDFA,不同APP在同一设备上获取IDFA的结果是一样的

    设备重启不会产生新的IDFA

    四、IDFVidentifierForVendor

    Vindor标示符,适用于对内:例如分析用户在应用内的行为等。

    是给Vendor标识用户用的,每个设备在所属同一个Vender的应用里,都有相同的值。其中的Vender是指应用提供商,但准确点说,是通过BundleID的DNS反转的前两部分进行匹配,如果相同就是同一个Vender,例如对于 com.somecompany.appone,com.somecompany.apptwo 这两个BundleID来说,就属于同一个Vender,共享同一个idfv的值。和idfa不同的是,idfv的值是一定能取到的,所以非常适合于作为内部用户行为分析的主id,来标识用户,替代OpenUDID。

    注意:如果用户将属于此Vender的所有App卸载,则idfv的值会被重置,即再重装此Vender的App,idfv的值和之前不同。

    代码:

    NSString *idfv = [[[UIDevice currentDevice] identifierForVendor] UUIDString];

    备注:

    idfv的值是一定能取到

    同一台设备上,来自同一个供应商的 App,IDFV 相同。

    同一台设备上,来自不同厂商的 App,IDFV 不同。

    不同设备的 IDFV 不同,与供应商无关。换言之,即使同一个厂商的 App,在不同设备上 IDFV 也不相同。

    当 iOS 设备上存在同一厂商的其他应用时,删除 App 重装,IDFV 保持不变。

    删除 iOS 设备上同一厂商全部 App,重新安装 App,IDFV 会发生改变。

    使用 Xcode 安装测试版本或 ad-hoc 包时,IDFV 会发生改变。

    还原设备,idfv变化 (设置程序 -> 通用 -> 还原 -> 还原位置与隐私)

      

    五、IMEI

    IMEI:英文名称是:International Mobile Equipment Identity,是国际移动设备身份码的缩写,国际移动装备辨识码,是由15位数字组成的”电子串号”,它与每台手机一一对应,而且该码是全世界唯一的。每一部手机在组装完成后都将被赋予一个全球唯一的一组号码,这个号码从生产到交付使用都将被制造生产的厂商所记录。手机用户可以在手机中查到自己手机的IMEI码。因为隐私问题,苹果用户在iOS5以后不能再获取IMEI的值了。如果开发的App不上架苹果商店,又想获取IMEI值,可参考此链接,获取IMEI值。

    备注:

    不让获取

    六、IMSI
    IMSI:英文名称是:International Mobile Subscriber Identification Number,是国际移动用户识别码的缩写,IMSI分为两部分:一部分叫MCC(Mobile Country Code移动国家码),MCC的资源由国际电联(ITU)统一分配,唯一识别移动用户所属的国家,MCC共3位,中国地区的MCC为460;另一部分叫MNC(Mobile Network Code 移动网络号码),MNC用于识别移动客户所属的移动网络运营商。MNC由二到三个十进制数组成,例如中国移动MNC为00、02、07,中国联通的MNC为01、06、09,中国电信的MNC为03、05、11。

    七、MAC

    MAC地址:Mac地址是唯一的,unix有系统调用可以获取Mac地址。iPhone可能有多个Mac地址,wifi的地址、以及SIM卡的地址。一般来讲,我们取en0的地址,因为它是iPhone的wifi的地址,是肯定存在的(例外情况依然有:市面上依然存在一部分联通的阉割版无wifi的iPhone)。Mac地址涉及到隐私,不应该胡乱将用户的Mac地址传播,所以我们需要将Mac地址进行hash之后再去使用。同样因为隐私问题,在iOS7以后,苹果禁止获取MAC地址,系统现在只会返回02:00:00:00:00:00虚拟的地址。

    备注:

    不让获取

    在北京的灯中,有一盏是我家的。这个梦何时可以实现?哪怕微微亮。北京就像魔鬼训练营,有能力的留,没能力的走……
  • 相关阅读:
    写给Web开发人员看的Nginx介绍
    Nginx安装及配置详解
    Intellij IDEA 热部署处理
    JSP自定义标签就是如此简单
    过滤器入门看这一篇就够了
    Caffe FCN:可视化featureMaps和Weights(C++)、获取FCN结果
    Caffe RPN :error C2220: warning treated as error
    实例分割:MaskXRCnn 与Visual Genome数据集
    Detectron-MaskRCnn: 用于抠图的FCNN
    CaffeMFC:caffe.pb.h(2525): error C2059: syntax error : 'constant'
  • 原文地址:https://www.cnblogs.com/huangzs/p/15167125.html
Copyright © 2020-2023  润新知