一种确定IOS设备的标识的方法及装置与流程

文档序号:13532297阅读:150来源:国知局
本发明涉及计算机
技术领域
:,特别涉及一种确定ios(苹果公司开发的移动操作系统)设备的标识的方法及装置。
背景技术
::为了保证用户的安全,在ios设备中,ios设备的udid(uniquedeviceidentifier,唯一设备识别符)无法被各种应用获取。为了保证ios设备上的各个应用的正常运行,ios设备提供了vendor或advertising标示符来替代udid。但是,vendor和advertising标示符不是保持不变的,当执行ios设备重新启动、删除应用再安装、应用更新等运行过程时,vendor或advertising标示符会发生改变。通过上述描述可见,在ios设备中,现有的标识(例如:vendor或advertising标示符)会发生改变,不方便应用的运行。技术实现要素:本发明实施例提供了一种确定ios设备的标识的方法及装置,能够更加方便ios设备上的应用的运行。一方面,本发明实施例提供了一种确定ios设备的标识的方法,包括:从ios设备的钥匙串中查询是否存在当前应用对应的所述ios设备的标识;当存在所述ios设备的标识时,从所述ios设备中读取所述ios设备的标识;当不存在所述ios设备的标识时,执行:生成所述当前应用对应的所述ios设备的标识;将生成的所述ios设备的标识保存到所述ios设备的钥匙串中,并获取所述ios设备的标识。进一步地,该方法进一步包括:当所述当前应用首次在所述ios设备上运行时,在所述ios设备的所述钥匙串中分配所述当前应用的存储空间;所述将生成的所述ios设备的标识保存到所述ios设备的钥匙串中,包括:将生成的所述ios设备的标识保存到所述当前应用的存储空间中。进一步地,在所述在所述ios设备的所述钥匙串中分配所述当前应用的存储空间之后,进一步包括:设置所述当前应用的存储空间的空间标识;所述从所述ios设备中读取所述ios设备的标识,包括:确定所述当前应用的存储空间的空间标识;根据所述空间标识确定位于所述钥匙串中的存储空间;从所述空间标识对应的位于所述钥匙串中的存储空间中读取出所述ios设备的标识。进一步地,当存在所述ios设备的标识时,进一步包括:判断所述ios设备中的所述ios设备的标识是否符合当前的标识要求,如果不符合,则执行:删除所述ios设备中的所述ios设备的标识;生成符合所述当前的标识要求的所述ios设备的标识;将生成的符合所述当前的标识要求的所述ios设备的标识保存到所述ios设备的钥匙串中。进一步地,当存在所述ios设备的标识时,进一步包括:在接收外部输入的删除命令时,根据所述删除命令,从所述ios设备中删除所述当前应用对应的所述ios设备的标识。另一方面,本发明实施例提供了一种确定ios设备的标识的装置,包括:查询单元和生成单元;所述查询单元,用于从ios设备的钥匙串中查询是否存在当前应用对应的所述ios设备的标识,当存在所述ios设备的标识时,从所述ios设备中读取所述ios设备的标识,当不存在所述ios设备的标识时,触发所述生成单元;所述生成单元,用于生成所述当前应用对应的所述ios设备的标识,将生成的所述ios设备的标识保存到所述ios设备的钥匙串中,并获取所述ios设备的标识。进一步地,该装置进一步包括:创建单元,用于当所述当前应用首次在所述ios设备上运行时,在所述ios设备的所述钥匙串中分配所述当前应用的存储空间;所述生成单元,用于将生成的所述ios设备的标识保存到所述当前应用的存储空间中。进一步地,所述创建单元,进一步用于设置所述当前应用的存储空间的空间标识;所述查询单元,用于确定所述当前应用的存储空间的空间标识,根据所述空间标识确定位于所述钥匙串中的存储空间,从所述空间标识对应的位于所述钥匙串中的存储空间中读取出所述ios设备的标识。进一步地,所述查询单元,进一步用于当存在所述ios设备的标识时,判断所述ios设备中的所述ios设备的标识是否符合当前的标识要求,如果不符合,则触发所述更新单元;所述更新单元,用于删除所述ios设备中的所述ios设备的标识,生成符合所述当前的标识要求的所述ios设备的标识,将生成的符合所述当前的标识要求的所述ios设备的标识保存到所述ios设备的钥匙串中。进一步地,该装置进一步包括:删除单元,用于当存在所述ios设备的标识时,在接收外部输入的删除命令时,根据所述删除命令,从所述ios设备中删除所述当前应用对应的所述ios设备的标识。在本发明实施例中,在ios设备中,当运行在ios设备上的任一当前应用没有对应的ios设备的标识时,生成当前应用对应的ios设备的标识,并保存到ios设备的钥匙串中,由于钥匙串中的数据不会因为ios设备重新启动、删除应用再安装、应用更新等运行过程而发生改变,能够更加方便ios设备上的应用的运行。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本发明一实施例提供的一种确定ios设备的标识的方法的流程图;图2是本发明一实施例提供的另一种确定ios设备的标识的方法的流程图;图3是本发明一实施例提供的一种确定ios设备的标识的装置的示意图;图4是本发明一实施例提供的另一种确定ios设备的标识的装置的示意图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。如图1所示,本发明实施例提供了一种确定ios设备的标识的方法,该方法可以包括以下步骤:步骤101:从ios设备的钥匙串中查询是否存在当前应用对应的所述ios设备的标识;如果是,执行步骤102,否则,执行,步骤103;步骤102:从所述ios设备中读取所述ios设备的标识;步骤103:生成所述当前应用对应的所述ios设备的标识,将生成的所述ios设备的标识保存到所述ios设备的钥匙串中,并获取所述ios设备的标识。在本发明实施例中,在ios设备中,当运行在ios设备上的任一当前应用没有对应的ios设备的标识时,生成当前应用对应的ios设备的标识,并保存到ios设备的钥匙串中,由于钥匙串中的数据不会因为ios设备重新启动、删除应用再安装、应用更新等运行过程而发生改变,能够更加方便ios设备上的应用的运行。在本发明实施例中,针对运行在ios设备上的各个应用,设置有针对每个应用的ios设备的标识,每个应用利用对应的标识来定位该ios设备。各个应用对应的ios设备的标识可以不同,只要该标识能够使得对应的应用定位该ios设备即可。举例来说,针对ios设备a,在ios设备a上运行有应用a和应用b,对于应用a来说,ios设备a的钥匙串中存储有应用a对应的ios设备a的标识a,对于应用b来说,ios设备a的钥匙串中存储有应用b对应的ios设备a的标识b。应用a通过标识a来确定ios设备a,应用b通过标识a来确定ios设备a。例如:在ios设备b上,也运行有应用a,ios设备b的钥匙串中存储有应用a对应的ios设备b的标识c。在应用a的服务器上,可以通过标识a和标识c来区分ios设备a和ios设备b。在本发明实施例中,可以通过以下代码将新生成的ios设备的标识保存到钥匙串中:secitemadd(cfdictionaryrefattributes,cftyperef*result);为了保证各个应用对应的ios设备的标识相互独立,在本发明一实施例中,该方法进一步包括:当所述当前应用首次在所述ios设备上运行时,在所述ios设备的所述钥匙串中分配所述当前应用的存储空间;所述将生成的所述ios设备的标识保存到所述ios设备的钥匙串中,包括:将生成的所述ios设备的标识保存到所述当前应用的存储空间中。在本发明实施例中,在ios设备的钥匙串中为各个应用设置对应的存储空间,各个应用可以在其对应的存储空间中存储对应的该ios设备的标识,各个应用只能到其对应的存储空间中读取标识,进而保证了各个应用之间互不影响,进而能够避免各个应用对应的标识被恶意修改,保证了ios设备的标识的可靠性。为了方便各个应用访问对应的位于钥匙串中的存储空间,在本发明实施例中,在所述在所述ios设备的所述钥匙串中分配所述当前应用的存储空间之后,进一步包括:设置所述当前应用的存储空间的空间标识;所述从所述ios设备中读取所述ios设备的标识,包括:确定所述当前应用的存储空间的空间标识;根据所述空间标识确定位于所述钥匙串中的存储空间;从所述空间标识对应的位于所述钥匙串中的存储空间中读取出所述ios设备的标识。在本发明实施例中,为各个应用的存储空间设置对应的空间标识,各个应用在访问对应的存储空间时,通过对应的空间标识即可进行访问。这里的空间标识可以是名称等。在本发明一实施例中,当存在所述ios设备的标识时,该方法进一步包括:判断所述ios设备中的所述ios设备的标识是否符合当前的标识要求,如果不符合,则执行:删除所述ios设备中的所述ios设备的标识;生成符合所述当前的标识要求的所述ios设备的标识;将生成的符合所述当前的标识要求的所述ios设备的标识保存到所述ios设备的钥匙串中。对应标识的要求可能会随着应用的更新等原因发生改变,这时,之前存储在钥匙串中的ios设备的标识可能无法满足当前的标识要求,这时,该标识无法直接使用,需要根据当前的标识要求生成新的标识,新的标识能够满足当前的标识要求,当前应用利用新的标识运行。在本发明实施例中,通过删除旧的标识,通过新的标识来替代旧的标识,实现了ios设备的标识在钥匙串中的更新。本发明实施例可以通过以下代码实现:secitemupdate(cfdictionaryrefquery,cfdictionaryrefattributestoupdate);在本发明一实施例中,当存在所述ios设备的标识时,该方法进一步包括:在接收外部输入的删除命令时,根据所述删除命令,从所述ios设备中删除所述当前应用对应的所述ios设备的标识。在本发明实施例中,当外部需要删除当前应用对应的ios设备的标识时,可以通过删除命令直接从ios设备中删除。通过本发明实施例能够更加灵活地对ios设备的钥匙串中的标识进行处理。本发明实施例的删除操作可以通过以下代码实现:secitemdelete(cfdictionaryrefquery);如图2所示,本发明实施例提供了一种确定ios设备的标识的方法,在本发明实施例中,当前应用为应用a,ios设备为ios设备a,该方法可以包括以下步骤:步骤201:在应用a首次在ios设备a上运行时,在ios设备a的钥匙串中分配应用a的存储空间,设置应用a的存储空间的空间标识。在应用a首次运行时,在钥匙串中为应用a分配存储空间,方便应用a存储生成的ios设备的标识。这里的空间标识可以是名称。可以通过以下代码设置空间标识:idret=nil;nsmutabledictionary*keychainquery=[selfgetkeychainquery:service];步骤202:从ios设备a的钥匙串中查询是否存在应用a对应的ios设备a的标识,如果是,执行步骤203,否则,执行步骤204、步骤205。具体地,可以通过以下代码来查询ios设备的钥匙串:secitemcopymatching(cfdictionaryrefquery,cftyperef*result)步骤203:确定应用a的存储空间的空间标识,根据该空间标识确定位于钥匙串中的存储空间,从该空间标识对应的位于钥匙串中的存储空间中读取出ios设备a的标识。在该步骤中通过空间标识在钥匙串中定位应用a对应的存储空间,并对该存储空间进行操作。具体地,可以通过以下代码读取出ios设备的标识。nsstring*uuid=[[nsuuiduuid]uuidstring]。步骤204:生成应用a对应的ios设备a的标识。具体的,不同的应用,可以使用不同的生成标识的方法,因此,每个应用生成的标识只需该应用自身能够识别即可。步骤205:将生成的ios设备a的标识保存到应用a的存储空间中,并获取ios设备a的标识。具体地,可以通过以下代码存储ios设备的标识:[keychainstoresave:@"com.xxx"data:struuid];本发明实施例可以通过以下代码实现:从ios设备的钥匙串中查询是否存在当前应用对应的所述ios设备的标识:nsstring*uuid=[[nsuuiduuid]uuidstring];nsstring*struuid=(nsstring*)[keychainstoreload:@"com.xxx"];//首次执行该方法时,uuid为空if([struuidisequaltostring:@""]||!struuid){struuid=uuid;//将该uuid保存到keychain[keychainstoresave:@"com.xxx"data:struuid];}returnstruuid;com.xxx为项目bundleid,若设备唯一标识存在,则读取;若不存在,则生成ios设备的标识。对于生成的ios设备的标识,将生成的ios设备的标识保存到ios设备的钥匙串中://获取查询词典nsmutabledictionary*keychainquery=[selfgetkeychainquery:service];//再添加新的标识前删除旧的标识secitemdelete((cfdictionaryref)keychainquery);//添加新的标识(该标识可以是字符串)[keychainquerysetobject:[nskeyedarchiverarchiveddatawithrootobject:data]forkey:(id)ksecvaluedata];//添加新的ios设备的标识至钥匙串secitemadd((cfdictionaryref)keychainquery,null);//配置应用对应的存储空间的空间标识idret=nil;nsmutabledictionary*keychainquery=[selfgetkeychainquery:service];//将标识从钥匙串中读取出来[keychainquerysetobject:(id)kcfbooleantrueforkey:(id)ksecreturndata];[keychainquerysetobject:(id)ksecmatchlimitoneforkey:(id)ksecmatchlimit];cfdatarefkeydata=null;//若读取异常(具有发出报错信息,结束当前流程)if(secitemcopymatching((cfdictionaryref)keychainquery,(cftyperef*)&keydata)==noerr){@try{ret=[nskeyedunarchiverunarchiveobjectwithdata:(__bridgensdata*)keydata];}@catch(nsexception*e){nslog(@"unarchiveof%@failed:%@",service,e);}@finally{}}//若读取正常,则返回标识if(keydata)cfrelease(keydata);returnret;如图3、图4所示,本发明实施例提供了一种确定ios设备的标识的装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。从硬件层面而言,如图3所示,为本发明实施例提供的一种确定ios设备的标识的装置所在设备的一种硬件结构图,除了图3所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备通常还可以包括其他硬件,如负责处理报文的转发芯片等等。以软件实现为例,如图4所示,作为一个逻辑意义上的装置,是通过其所在设备的cpu将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。本实施例提供的一种确定ios设备的标识的装置,包括:查询单元401和生成单元402;所述查询单元401,用于从ios设备的钥匙串中查询是否存在当前应用对应的所述ios设备的标识,当存在所述ios设备的标识时,从所述ios设备中读取所述ios设备的标识,当不存在所述ios设备的标识时,触发所述生成单元402;所述生成单元402,用于生成所述当前应用对应的所述ios设备的标识,将生成的所述ios设备的标识保存到所述ios设备的钥匙串中,并获取所述ios设备的标识。在本发明一实施例中,该装置进一步包括:创建单元,用于当所述当前应用首次在所述ios设备上运行时,在所述ios设备的所述钥匙串中分配所述当前应用的存储空间;所述生成单元,用于将生成的所述ios设备的标识保存到所述当前应用的存储空间中。在本发明一实施例中,所述创建单元,进一步用于设置所述当前应用的存储空间的空间标识;所述查询单元,用于确定所述当前应用的存储空间的空间标识,根据所述空间标识确定位于所述钥匙串中的存储空间,从所述空间标识对应的位于所述钥匙串中的存储空间中读取出所述ios设备的标识。在本发明一实施例中,所述查询单元,进一步用于当存在所述ios设备的标识时,判断所述ios设备中的所述ios设备的标识是否符合当前的标识要求,如果不符合,则触发所述更新单元;所述更新单元,用于删除所述ios设备中的所述ios设备的标识,生成符合所述当前的标识要求的所述ios设备的标识,将生成的符合所述当前的标识要求的所述ios设备的标识保存到所述ios设备的钥匙串中。在本发明一实施例中,该装置进一步包括:删除单元,用于当存在所述ios设备的标识时,在接收外部输入的删除命令时,根据所述删除命令,从所述ios设备中删除所述当前应用对应的所述ios设备的标识。上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。本发明实施例提供了一种可读介质,包括执行指令,当存储控制器的处理器执行所述执行指令时,所述存储控制器执行本发明实施例提供的任意一种确定ios设备的标识的方法。本发明实施例提供了一种存储控制器,包括:处理器、存储器和总线;所述存储器用于存储执行指令,所述处理器与所述存储器通过所述总线连接,当所述存储控制器运行时,所述处理器执行所述存储器存储的执行指令,以使所述存储控制器执行本发明实施例提供的任意一种确定ios设备的标识的方法。本发明各个实施例至少具有如下有益效果:1、在本发明实施例中,在ios设备中,当运行在ios设备上的任一当前应用没有对应的ios设备的标识时,生成当前应用对应的ios设备的标识,并保存到ios设备的钥匙串中,由于钥匙串中的数据不会因为ios设备重新启动、删除应用再安装、应用更新等运行过程而发生改变,能够更加方便ios设备上的应用的运行。2、在本发明实施例中,在ios设备的钥匙串中为各个应用设置对应的存储空间,各个应用可以在其对应的存储空间中存储对应的该ios设备的标识,各个应用只能到其对应的存储空间中读取标识,进而保证了各个应用之间互不影响,进而能够避免各个应用对应的标识被恶意修改,保证了ios设备的标识的可靠性。需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个〃····〃”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质中。最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1