App上架后,我们怎么知道APP使用的情况,被下载了多少次?被点击了多少次?几乎每家公司都有这种需求,那我们怎么来识别用户呢?唯一标示符就是干这个事情的。那苹果提供了那些方法?
- IDFA(identifier for identifier)
IDFA(广告标示符)是iOS6中引入的方法。使用需要导入框架#include<AdSupport/ASIdentifierManager.h>
然后通过NSString *mobileID = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
就可以获取到。
IDFA是由系统存着的,还原系统和在设置中重置都会被还原(所以IDFA可能会出现取不到的情况),同一设备上的所有App都会取到相同的IDFA值,苹果对IDFA的使用做了限制,使用IDFA但未集成任何广告服务的应用审核都会被拒,应用中使用了IDFA的话,必须在iTunes Connect中的上传页面进行相应的设置,否则上传应用审核的时候会出现错误。
IDFA基本上是目前识别唯一标示符最通用的方法。 - UDID
UDID(Unique Device Identifier),顾名思义,它是苹果设备的唯一标示符,是由40个字母和数字构成,按理说,这是最好的识别设备的方法,但是,你知道的,苹果非常重视用户隐私,iOS5之后这个接口被苹果禁用了。 - UUID
UUID(Universally Unique Identifier),通用唯一标示符。它是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。这样,每个人都可以建立不与其它人冲突的 UUID。在此情况下,就不需考虑数据库建立时的名称重复问题。苹果公司建议使用UUID为应用生成唯一标识字符串。
开发者可以在应用第一次启动时调用一 次,然后将该串存储起来,替代UDID来使用。但是,如果用户删除该应用再次安装时,又会生成新的字符串,所以不能保证唯一识别该设备。使用UUID,就要考虑应用被删除后再重新安装时的处理。一个解决的办法是:UUID一般只生成一次,保存在iOS系统里面,如果应用删除了,重装应用之后它的UUID还是一样的,除非系统重置 。但是不能保证在以后的系统升级后还能用(如果系统保存了该信息就能用)。 - MAC Address
用来表示互联网上每一个站点的标识符,采用十六进制数表示,共六个字节(48位)。其中,前三个字节是由IEEE的注册管理机构RA负责给不同厂家分配的代码(高位24位),也称为“编制上唯一的标识符” (Organizationally Unique Identifier),后三个字节(低位24位)由各厂家自行指派给生产的适配器接口,称为扩展标识符(唯一性)。
MAC地址在网络上用来区分设备的唯一性,接入网络的设备都有一个MAC地址,他们肯定都是不同的,是唯一的。一部iPhone上可能有多个MAC地址,包括WIFI的、SIM的等,但是iTouch和iPad上就有一个WIFI的,因此只需获取WIFI的MAC地址就好了,也就是en0的地址。
MAC地址就如同我们身份证上的身份证号码,具有全球唯一性。这样就可以非常好的标识设备唯一性,类似与苹果设备的UDID号,通常的用途有:1)用于一些统计与分析目的,利用用户的操作习惯和数据更好的规划产品;2)作为用户ID来唯一识别用户,可以用游客身份使用app又能在服务器端保存相应的信息,省去用户名、密码等注册过程。
使用Mac地址生成设备的唯一标识主要分三种:
1)直接使用“MAC Address”
2)使用“MD5(MAC Address)”
3)使用“MD5(Mac Address+bundle_id)”获得“机器+应用”的唯一标识(bundle_id 是应用的唯一标识)
在iOS7之后,如果请求Mac地址都会返回一个固定值