一种获取iOS终端设备唯一标识符的方法和系统与流程

文档序号:30078747发布日期:2022-05-18 03:54阅读:314来源:国知局
一种获取iOS终端设备唯一标识符的方法和系统与流程
一种获取ios终端设备唯一标识符的方法和系统
技术领域
1.本发明涉及移动应用技术领域,特别地涉及一种获取ios终端设备唯一标识符的方法和系统。


背景技术:

2.设备id是移动应用技术领域中一个非常关键的数据,对于ios设备,可作为设备id的数据例如为udid、mac地址、uuid、idfa和idfv。
3.其中,udid(unique device identifier,设备唯一标识符)是苹果ios设备的唯一标识符,其用途之一是被第三方应用开发者和网络广告商用来收集用户数据,记录用户对应用的使用习惯,以便推送精准广告。另一主要用途是通过udid将某些数据关联到相关设备上。例如,利用udid将正在开发的应用连接到开发者ios设备上,从而允许应用在发布前能够通过特定的设备安装或测试,或者使开发者体验应用的ios测试版。在ios5以前可以通过系统命令获取udid,但是由于用户信息的安全、用户隐私等问题,苹果公司在ios5以后禁止了通过代码访问udid的权限。
4.之后人们使用mac地址(medium/media access control address)来作为设备的唯一标识符。mac地址为网络设备的物理地址,是网络接口唯一标识,然而同样由于用户隐私问题,在ios7之后便被苹果公司禁止获取。
5.uuid(universally unique identifier,通用唯一识别码)是将应用数据和设备数据绑定在一起而产生的标识符。当在设备上安装来自同一个供应商的不同应用时,此值保持不变。如果删除了来自某个供应商的所有应用,再重新安装所述应用时,uuid会改变。
6.idfa(advertise identifier,广告标识符)是苹果专门给各广告提供商用来追踪用户而设定的设备标识符,不同应用在同一设备上获取的idfa是相同的。设备重启不会产生新的idfa。但是如果用户完全重置系统(设置顺序为:“设置程序”、“通用”、“还原”、“还原位置与隐私”),这个广告标示符会重新生成。另外,如果用户明确地进行还原广告设置时(用户顺序点击以下设备选项:“设置程序”、“通用”、“关于本机”、“广告”、“还原广告标识符”),那么广告标识符也会重新生成。由于会出现取不到idfa的情况,故通常不使用idfa作为业务分析的主id来识别用户。
7.idfv(identifierforvendor,厂商标识符)是一种另一种用来标识ios设备的标识符。如果设备中的应用是从app store下载而来,idfv则由app store提供的数据决定,如果设备中的应用是通过enterprise包或者通过xcode安装的调试包而来,idfv则由app的bundle id计算得来。同一厂商/开发商的应用在指定设备上得到同一个id。当某一个设备上某个开发商的所有应用被删除之后,在重新安装该开发商的应用后获取到不同的id。
8.综上所述,在获取ios设备的各种设备标识符时或者依赖于苹果公司,或者依赖于app store,这种依赖性带来的问题之一是在获取这些标识符时要遵循诸多限制,例如在ios5以后获取不到udid;在ios7以后获取不到mac地址;当用户禁止了idfa的获取时,无法得到idfa;当设备上某个开发商的所有应用被删除后也无法得到idfv。问题之二是这些标
识符在一定情况下会发生变化,并不能持久地、唯一地表示一个ios设备,不是真正意义上的唯一标识符。因此有必要提供一种获取ios终端设备唯一标识符的方法。


技术实现要素:

9.针对现有技术中存在的技术问题,本发明提出了一种获取ios终端设备唯一标识符的方法和系统,用以提供不同持久级别的设备唯一标识符以满足应用在运行过程中的不同使用需求。
10.为了解决上述技术问题,根据本发明的一个方面,本发明提供了一种获取ios终端设备唯一标识符的方法,包括以下步骤:接收目标应用对设备唯一标识符的请求信息,并从中确定被请求的设备唯一标识符的持久级别;读取所述目标应用安装于所述ios终端时获取的终端信息;以所述终端信息作为随机因子生成随机数;以及根据被请求的唯一标识符的持久级别,将所述随机数作为唯一标识符存储在相应的存储位置。
11.为了解决上述技术问题,根据本发明的一个方面,本发明提供了一种获取ios终端设备唯一标识符的系统,包括信息获取模块、请求接收模块、随机数生成模块和存储模块,其中,所述信息获取模块经配置以获取目标应用安装时的终端信息;所述请求接收模块经配置以接收目标应用对设备唯一标识符的请求信息,并从中确定被请求的设备唯一标识符的持久级别;所述随机数生成模块与所述信息获取模块和请求接收模块相连接,经配置以在所述请求接收模块接收到目标应用对设备唯一标识符的请求信息时,以所述信息获取模块获得的所述终端信息作为随机因子生成随机数;所述存储模块与所述随机数生成模块相连接,经配置以根据持久级别,将所述随机数生成模块生成的所述随机数作为唯一标识符存到相应的存储位置。
12.本发明能够提供不同持久级别的唯一标识符,并且不再依赖、受制于苹果公司或其他第三方,并且提供的最高持久级别可以在终端系统重置后仍不会改变,从而能够很好地满足ios终端应用的各种需求,如资源共享、数据共享、用户共享、分析用户价值及用户行为、识别违规用户、低级用户和未成年用户等群体等等。
附图说明
13.下面,将结合附图对本发明的优选实施方式进行进一步详细的说明,其中:
14.图1是根据本发明一个应用实施例的设备唯一标识符的获取方法流程图;
15.图2是图1中标识符获取系统获取ios终端设备唯一标识符的方法流程图;
16.图3是根据本发明的一个实施例生成随机数的方法流程图;
17.图4是根据本发明的一个实施例当系统重置后获取设备唯一标识符的方法流程图;
18.图5是根据本发明的一个实施例的获取ios终端设备唯一标识符的系统原理框图;
19.图6是根据本发明的一个实施例的随机数生成模块原理框图;
20.图7是根据本发明另一个实施例的随机数生成模块原理框图;
21.图8是根据本发明的一个实施例的存储模块的原理框图;以及
22.图9是根据本发明另一个实施例的存储模块的原理框图。
具体实施方式
23.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
24.在以下的详细描述中,可以参看作为本技术一部分用来说明本技术的特定实施例的各个说明书附图。在附图中,相似的附图标记在不同图式中描述大体上类似的组件。本技术的各个特定实施例在以下进行了足够详细的描述,使得具备本领域相关知识和技术的普通技术人员能够实施本技术的技术方案。应当理解,还可以利用其它实施例或者对本技术的实施例进行结构、逻辑或者电性的改变。
25.图1是根据本发明一个应用实施例的ios终端设备唯一标识符的获取方法流程图。在本实施例中,目标应用100运行于如iphone、ipad等ios终端设备上,同时,获取ios终端设备唯一标识符系统(即图1中的简化名称“标识符获取系统200”)也运行于ios终端设备上。目标应用100在运行过程中,当其需要使用设备唯一标识符时,在步骤s1向标识符获取系统200发送获取唯一标识符的请求,在该请求中还包括了要使用的唯一标识符的持久级别。所述的持久级别包括安装级别、厂商级别、keychain级别和设备级别,其中,每个持久级别的标识符的作用如下表1所示:
26.表1
[0027][0028]
当标识符获取系统200接收到所述请求时,在步骤s2获取被请求的标识符,并将其存储在相应的位置,然后在步骤s3向目标应用发送所述标识符已生成的通知。目标应用100接收到所述通知后,到指定位置读取所述标识符,以满足当前的需求。
[0029]
图2是图1中标识符获取系统2获取ios终端设备唯一标识符的方法流程图,所述方法包括以下步骤:
[0030]
步骤s21,接收目标应用对设备唯一标识符的请求信息,并从中确定被请求的设备唯一标识符的持久级别。
[0031]
步骤s22,读取所述目标应用安装于所述ios终端设备时获取的终端信息。其中,在目标应用安装在当前的ios终端设备时会获取一些终端信息,所述终端信息可以是目标应用的安装时间;可以是设备信息,例如设备型号、设备外壳颜色等;可以是硬件信息,如当前cpu温度、cpu损耗等;可以是屏幕信息,如当前屏幕尺寸、当前亮度、当前触摸数据等;可以是当前的网络信息,如wifi名称、网络制式等;还可以是广告位标识符。以上终端信息是在目标设备安装时获得的瞬时信息。
[0032]
步骤s23,以所述终端信息作为随机因子生成随机数。在一个实施例中,本发明利
用linux内核中的随机数发生器prng生成所述随机数。其中,linux内核采用熵来描述数据的随机性,熵是描述系统混乱无序程度的物理量,linux内核维护一个熵池,其用于收集来自设备驱动程序和其它来源的环境噪音。所述的环境噪音包括在设备两次中断间的间隔所收集的数据,或者是在输入设备的两次操作时间间隔收集的数据,或者是在两次连续磁盘操作的时间间隔收集的数据,在本实施例中,除了前述各种数据外,还包括前述在目标设备安装时获得的瞬时信息,这些瞬时信息作为噪声数据加入到熵池中。由于熵池中的数据是完全随机的,从而可以根据熵池中的噪声数据产生真随机数序列。linux内核中的随机数发生器prng为一个字符设备,其利用一系列的接口函数来获取熵池中的噪声数据,并根据获取的噪声数据生成真随机数序列。在本实施例中,所述真随机数序列则为所述随机数。
[0033]
在另一个实施例中,为了保证生成的随机数是唯一存在的随机数,生成随机数的过程如图3所示,包括以下步骤:
[0034]
步骤s231,等待目标应用对设备唯一标识符的请求信息。
[0035]
步骤s232,判断是否收到所述请求信息,如果收到,则执行步骤s233,如果没有收到,则返回步骤s231。
[0036]
步骤s233,获取上一次生成设备唯一标识符时使用的噪声数据。
[0037]
步骤s234,获取当前系统熵池内的噪声数据。
[0038]
步骤s235,对比二者是否相同,如果相同,则执行步骤s237,如果不相同,则在步骤s236,以当前噪声数据生成真随机数序列。
[0039]
步骤s237,等待预置的时间,例如设备两次中断之间的间隔,或者是预设的时间段,如2s,然后执行步骤s234。
[0040]
由于在目标应用的运行过程中可能需要多个不同持久级别的唯一标识符,因而会应目标应的请求多次生成标识符,通过本实施例上述的随机数生成过程可以避免生成重复的标识符,以确保所生成的标识符的唯一性。
[0041]
步骤s24,根据被请求的唯一标识符的持久级别,将所述随机数作为唯一标识符存储在相应的存储位置。其中,如前述表1所示,在持久级别为安装级别时,将所述唯一标识符存储在nsuserdefaults中。在所述持久级别为厂商级别时,将所述唯一标识符存储在plist文件中。在所述持久级别为keychain级别时,将所述唯一标识符存储在keychain中。在所述持久级别为设备级别时,将所述唯一标识符存储在keychain中,再将存储了唯一标识符的keychain信息备份到服务器中,而后还将收集到的所述ios终端的用户特征信息上传到服务器。其中,所述用户特征信息包括以下信息中的一种或多种:广告位标识符、设备型号、iphone设备颜色或外壳颜色、mac地址、ip地址、cpu信息、disk磁盘空间信息、memory内存相关数据、系统版本信息、可能获得到的idfa、idfv、uuid、屏幕尺寸、音量大小、屏幕亮度、获取到的wifi名称、网络制式、是否越狱、判断是否插入sim卡、判断是否允许推送、获取系统开机时间到1970时间差值等等。当服务器接收到所述keychain信息和所述用户特征信息后,将所述keychain信息和所述用户特征信息关联在一起作为所述ios终端设备的备份信息。进一步地,由于keychain信息中除了存储所述唯一标识符外,也包括其他一些ios终端中的信息,例如用户身份信息、用户常用的一些密钥、网络信息(wifi名称和密码、网络制式等),广告标识符等,因而keychain中的某些信息与上传的用户特征信息可能有重复,服务器将keychain信息和用户特征信息合并在一起,并剔除重复的信息。进一步地,为了方便在
获取唯一标识符时的匹配,服务器为所述备份信息建立匹配的顺序,在一个实施例中,顺序如下:广告位标识符、设备型号、iphone设备颜色或外壳颜色、mac地址、ip地址、cpu信息、disk磁盘空间信息、memory内存相关数据、系统版本信息、可能获得到的idfa、idfv、uuid、屏幕尺寸、音量大小、屏幕亮度、获取到的wifi名称、网络制式、是否越狱、是否插入sim卡、是否允许推送、获取系统开机时间到1970时间差值。
[0042]
图4是根据本发明另一个实施例中当系统重置后获取设备唯一标识符的流程图。所述方法包括以下步骤:
[0043]
步骤s1a,在ios终端系统重置后重新安装所述目标应用时收集用户特征信息。
[0044]
步骤s2a,判断是否接收到目标应用对设备级别的唯一标识符的请求信息,如果接收到对设备级别的唯一标识符的请求信息,则执行步骤s3a。
[0045]
步骤s3a,将所述用户特征信息上传给服务器,并请求获得设备唯一标识符。
[0046]
步骤s4a,所述服务器接收到所述用户特征信息及获得设备唯一标识符的请求后,查询内部存储的多个ios终端设备的备份信息,将各个ios终端设备的备份信息与接收到的用户特征信息一一匹配以确定出对应的唯一标识符。其中,服务器对备份信息中的各种特征信息按照其对区别终端设备的有效性从高到低排序,例如,广告位标识符、设备型号、iphone设备颜色/外壳颜色、mac地址、ip地址、cpu信息、disk磁盘空间信息、memory内存相关数据等等。所述服务器将接收到的所述用户特征信息与备份信息中的特征信息进行一一对比、匹配,可将与用户特征信息完全相同的备份信息中的设备唯一标识符确定为该系统重置设备的设备唯一标识符,也可以将二者前n个特征信息相同的备份信息中的设备唯一标识符确定为该系统重置设备的设备唯一标识符。
[0047]
步骤s5a,读取确定的设备唯一标识符,并返回给所述ios终端。
[0048]
步骤s6a,将所述设备唯一标识符存储到keychain中,并通知所述目标应用。
[0049]
图5是根据本发明一个实施例的获取ios终端设备唯一标识符的系统原理框图。在本实施例中,所述系统包括信息获取模块1、请求接收模块2、随机数生成模块3和存储模块4,其中,在一个实施例中,所述信息获取模块1用于获取目标应用安装时的终端信息。在另一个实施例中,所述信息获取模块1包括所述终端信息获取单元11和用户特征信息收集单元12,所述终端信息获取单元11用于获取目标应用安装时的终端信息,而所述用户特征信息收集单元12用以收集所述ios终端的用户特征信息。
[0050]
所述请求接收模块2用于接收目标应用对设备唯一标识符的请求信息,并从中确定被请求的设备唯一标识符的持久级别。所述所述请求接收模块2向所述随机数生成模块3发送请求信息,在所述通知中包括被请求的设备唯一标识符的持久级别。
[0051]
所述随机数生成模块3与所述信息获取模块1和请求接收模块2相连接,用以接收所述请求接收模块2发送的请求信息,以所述信息获取模块获得的所述终端信息作为随机因子生成随机数。在生成随机数后,将所述随机数发送给存储模块4。
[0052]
所述存储模块4与所述随机数生成模块3相连接,根据持久级别,将所述随机数生成模块3生成的所述随机数作为设备唯一标识符存到相应的存储位置。
[0053]
在一个实施例中,如图6所示,所述随机数生成模块3包括熵池扩展单元31、随机数发生器调用单元32和随机数获取单元33,其中,所述熵池扩展单元31与终端信息获取单元11相连接,以将目标应用安装时获取的终端信息作为噪声数据加入到系统熵池。所述随机
数发生器调用单元与请求接收模块2相连接,在接收到所述请求接收模块2发送的请求信息时调用系统内核的随机数发生器,所述随机数发生器根据所述熵池中的噪声数据生成真随机数序列。所述随机数获取单元33与所述随机数发生器相连接,用于读取随机数发生器生成的真随机数序列,将所述真随机数序列确定为所述随机数而发送给存储模块4。
[0054]
在另一个实施例中,如图7所示,所述随机数生成模块3除了包括熵池扩展单元31、随机数发生器调用单元32和随机数获取单元33,所述随机数生成模块3进一步包括熵池管理单元34,其与所述随机数发生器调用单元32相连接,经配置在接收到所述请求接收模块2发送的请求信息时,将当前系统熵池内的噪声数据与前一次生成随机数时使用的噪声数据相比较;在当前系统熵池内的噪声数据与前一次生成随机数时使用的噪声数据不同时,向所述随机数发生器调用单元32发出调用通知;对应地,所述随机数发生器调用单元32在接收到所述调用通知时调用系统内核的随机数发生器。随机数发生器以当前熵池中的噪声数据生成真随机数序列。所述随机数获取单元33将所述真随机数序列确定为所述随机数而发送给存储模块4。
[0055]
如图8所示,为所述存储模块的原理框图,所述存储模块4包括标识符存储单元41和备份单元42,其中,所述标识符存储单元41与所述随机数生成模块3相连接,在所述持久级别为安装级别时,将所述随机数存储在nsuserdefaults中;在所述持久级别为厂商级别时,将所述随机数存储在plist文件中;在所述持久级别为keychain级别和设备级别时,将所述唯一标识符存储在keychain中。当所述持久级别为设备级别时,所述备份单元42分别将存储了所述唯一标识符的keychain信息和收集到的用户特征信息上传到服务器300中。服务器300将所述唯一标识符和所述用户特征信息关联在一起得到所述ios终端设备的备份信息。
[0056]
如图9所示,为根据本发明另一个实施例所述系统的原理框图。在一实施例中,除了包括图5中所述的信息获取模块1、请求接收模块2、随机数生成模块3和存储模块4外,还包括标识符请求模块5。ios终端系统重置后,当重新安装所述目标应用时,信息获取模块1中的用户特征信息收集单元12获取该ios终端的用户特征信息,并将其发送给标识符请求模块5。在目标应用运行过程中需要使用设备级的设备唯一标识符时,其向本系统发送请求设备唯一标识符的请求信息,所述请求接收模块2接收到所述请求信息后,发送通知给所述标识符请求模块5,所述标识符请求模块5向服务器300发送获取设备唯一标识符的请求,并在请求中包括当前收集到的用户特征信息。服务器300匹配到对应的设备唯一标识符时,将所述设备唯一标识符发送给所述ios系统,由所述标识符请求模块5接收,并发送给存储模块4,由存储模块4存储到keychain中。
[0057]
本发明提供的获取ios系统不同持久性级别的设备唯一标识符的方法和系统可以满足应用对不同持久级别的唯一标识符的需求,不再依赖、受制于苹果公司或其他第三方,并且可以使同一个icloud帐户在多个设备之间共享唯一标识符,具有相互关联的不同应用程序之间共享唯一标识符,从而实现资源共享、数据共享、用户共享,便于进行用户价值及用户行为的分析和用户分群,可以有效地识别出违规用户、低级用户和未成年用户群体,还可能丰富推广运营活动。
[0058]
上述实施例仅供说明本发明之用,而并非是对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明范围的情况下,还可以做出各种变化和变型,因此,所有等同
的技术方案也应属于本发明公开的范畴。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1