[0044] 下面结合附图并通过具体实施方式来进一步说明本发明的技术方案。
[0045] 如图1所示,一种手机ID确定方法,包括以下步骤:
[0046] 手机app端初始化时,检查本机是否已存储了deviceID,如果已存在,则将deviceID和辅助ID作为参数,向服务器进行初始化请求。手机app端的启动时,如果有deviceID和辅助ID值,则在初始化过程上报deviceID和辅助ID。服务器端根据手机上报的deviceID和辅助ID,查询数据库,检查其是否失效,如果失效,则将新生成的变迁后的deviceID和辅助ID返回给手机app端;如果有效,则不更新deviceID和辅助ID。
[0047] 如果未存在,则向服务器端请求deviceID。
[0048] 请求deviceID时,需上报本机的信息。
[0049] 对于iOS系统,采用广告ID以及操作系统类型和版本号;
[0050] 对应Android系统,采用硬件序列号,Wifi MAC地址,IMEI及AndroidID,以及操作系统类型和版本号,允许某些无法采集的信息为空。
[0051] 服务器端收到app端请求deviceID的请求后,进行下列处理:
[0052] 如果为iOS系统,使用广告ID,映射一个唯一的deviceID。
[0053] 如果为Android系统,按照硬件序列号、Wifi MAC地址、IMEI、AndroidID的优先级次序,排除无效值的信息字段,取得第一个有效信息字段,根据此有效信息字段,映射一个唯一deviceID。
[0054] 无效值的信息字段,除了值为空的字段外,还有是已经在无效值列表数据中的值。
[0055] 对于Android系统,实施例一,假设,
[0056] 硬件序列号的值为A;
[0057] Wifi MAC地址的值为B;
[0058] IMEI的值为C;
[0059] AndroidID的值为D;
[0060] 且A,B,C,D均为有效唯一值字段,则采用硬件序列号的值A映射一个唯一deviceID。
[0061] 对于Android系统,实施例二,假设,
[0062] 硬件序列号的值为空;
[0063] Wifi MAC地址的值为B;
[0064] IMEI的值为C;
[0065] AndroidID的值为D;
[0066] 且B,C,D均为有效唯一值字段,则采用Wifi MAC地址的值为B映射一个唯一deviceID。
[0067] 对于Android系统,实施例三,假设,
[0068] 硬件序列号的值为A;
[0069] Wifi MAC地址的值为B;
[0070] IMEI的值为C;
[0071] AndroidID的值为D;
[0072] 且A为无效值,B,C,D均为有效唯一值字段,则采用Wifi MAC地址的值为B映射一个唯一deviceID。
[0073] 对于Android系统,实施例四,假设,
[0074] 硬件序列号的值为A;
[0075] Wifi MAC地址的值为空;
[0076] IMEI的值为C;
[0077] AndroidID的值为D;
[0078] 且A为无效值,C,D均为有效唯一值字段,则采用IMEI的值为C映射一个唯一deviceID。
[0079] 对于Android系统,实施例五,假设,
[0080] 硬件序列号的值为A;
[0081] Wifi MAC地址的值为空;
[0082] IMEI的值为空;
[0083] AndroidID的值为D;
[0084] 且A为无效值,D均为有效唯一值字段,则采用Android ID的值为D映射一个唯一deviceID。
[0085] 系统使用invalid_device_items无效值列表记录无效值,包含两个字段:
[0086] itemname和itemvalue,即字段名称和字段值。字段名值为唯一值字段名,对应Android系统,即为硬件序列号,Wifi MAC地址,IMEI及AndroidID中的一种。字段值为该字段名失去唯一性的值。
[0087] 服务器端先根据唯一值字段,在数据库中搜索已有记录,是否有匹配的唯一值的记录,如果存在,则取得匹配的唯一值且辅助ID值最大的记录的deviceID,同时重新分配一个辅助ID。
[0088] 如果没有匹配的唯一值的记录,则根据唯一值字段生成一个新的deviceID。生成deviceID之前,先生成一个辅助ID,从而既保证唯一递增,又能避免发冲突。
[0089] 唯一deviceID的生成方法很多,如采用请求时间戳连接一个随机数组成的字符串,然后使用32位长度的md 5算法,生成一个32位长度的字符串作为唯一的ID。md 5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理。MD5可以为任何文件(不管其大小、格式、数量)产生一个同样独一无二的“数字指纹”,如果任何人对文件做了任何改动,其MD5值也就是对应的“数字指纹”都会发生变化。MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。举个例子,你将一段话写在一个叫readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现(两个MD5值不相同)。
[0090] 或直接类似于辅助ID的生成方法,利用数据库自增字段来获取。
[0091] 服务器端将生成的deviceID或已存在的deviceID,以及新生成的辅助ID,以及收到的手机信息均存入数据库中。
[0092] 服务器端给手机app端返回deviceID和辅助ID信息。
[0093] 手机app端存储deviceID和辅助ID信息,避免频繁申请。
[0094] 采用由服务器端根据app上报手机的信息来生成唯一ID,并引入了辅助ID的概念,来识别伪唯一信息和确保ID的稳定性。
[0095] 服务器端生成手机ID的方法的优点是,算法在服务器端生成,可以针对不同的手机操作系统类型,不同的手机操作系统版本及某些失效的伪唯一信息(如失效的wifi mac地址等)进行针对性的处理和调整,而如果由手机端生成,算法一旦确定,不能随意调整,毕竟更新app端程序的代价要比更新后台服务器代码的成本要高得多。
[0096] 服务器端进行日常deviceID异常检测。检测原理如下:
[0097] 检测app端提交的与deviceID有关的记录,这些记录成为打点信息。如果在打点信息中,发现某个deviceID,其辅助ID值不是该deviceID对应的最大辅助ID值,则说明该deviceID异常,说明该deviceID依赖的唯一值字段,实际上值被复制,不唯一了。此时进行如下处理:
[0098] 在数据库中查找异常的deviceID和辅助ID的记录,将其置为无效状态,并查找当时的有效唯一值,将该唯一值对应的字段名以及值作为失效值加入invalid_device_items表中。举个例子,假设当时的有效唯一值字段为硬件序列号,值为A,则(硬件序列号,A)这组值加入invalid_device_items表之后,以后发现硬件序列号值为A时,将被判别为无效值。然后,服务器端根据异常deviceID和辅助ID对应的手机信息,重新进行请求deviceID过程,得到新的deviceID和辅助ID。然后将deviceID和辅助ID的变迁信息写入数据库,从而可以跟踪deviceID,保障手机识别的延续性。
[0099] 一种手机ID确定系统,包括服务器端、服务器数据库、无线收发模块、手机app端和手机数据库。通过该系统每个用户终端都能确定一个deviceID,此deviceID在整个系统中是唯一的,可用于确定拥有该deviceID的移动智能终端是否在某个特定的位置出现。
[0100] 现有技术通过GPS或移动基站来认定某个ID是否在某个特定的位置出现,但是,由于GPS只能在室外使用,而移动基站定位误差达到几百米。而且这几种现有的方式也不能正真认定ID,只是一种单方面的报告。目前,还有一些ID的位置认证方法,如二维码扫描。把二维码放置在某个位置,用户通过智能手机上的APP软件扫描二维码来认证某个ID在此位置出现过并完成了任务,并给予奖励。但是二维码照片没有位置特性容易复制而造假。也就是说一个用户对放置在某个位置的二维码拍照并上传到互联网,那么世界上任何一个位置的用户只要对着网上的二维码照片扫描就可以完成认证和任务。而且,这种认证也是单方面报告的认证,即单向认证。
[0101] 本发明还包括一种基于deviceID的移动智能终端ID位置认证的方法及其系统。系统包括服务器、服务器数据库、商家终端和商家端数据库、辅助无线发射模块、用户终端和用户端数据库。每个用户终端有一个deviceID,此deviceID在整个系统中是唯一的。每个商家终端有一个识别号和MAC地址,此识别号和MAC在整个系统中是唯一的。辅助无线发射模块有一个识别号和MAC地址,此识别号和MAC地址在整个系统中是唯一的。每个辅助无线发射模块隶属于一个商家终端,一个商家终端可以有多个辅助无线发射模块隶属于它。
[0102] 商家终端放置于某个地点,系统服务器数据库中设置此商家终端的地理坐标、MAC地址、识别号等数据。系统服务器数据库中设置隶属于此商家终端的辅助无线发射模块的MAC地址、识别号等数据。用户终端安装在智能手机等智能设备上,系统服务器数据库中保存此用户终端ID、MAC地址等数据。
[0103] 商家终端通过无线波方式不断搜索并发现周边智能设备的MAC地址和识别号。循环式搜索方式:设第一次搜索时长为T,搜索完成后第二次时长是1/2T,第三次是1/4T,一直到设备允许的最小时长为止,然后重新回到搜索时长为T,不断循环。
[0104] 辅助无线发射模块发射无线波。但是,它不搜索,它一直处于可被发现状态,但拒绝跟任何设备匹配。
[0105] 当商家终端发现周边一定距离内的设备的MAC地址、识别号等后,在商家终端数据库中比对识别号、MAC地址等数据,如果跟预设的规则相符,把此次发现的有效数据发送给服务器。
[0106] 用户终端在有效距离内搜索商家终端和辅助无线发射模块,搜索是通过无线波来完成的。用户终端发现周围智能设备的MAC地址、识别号等后,在用户终端数据库中比对识别号、MAC地址等数据,如果跟预设的规则相符,把此次发现的有效数据发送给服务器。
[0107] 服务器收到商家终端和用户终端发送来的数据后,根据预设的条件进行比对,如果跟预设的规则相符,服务器认定此用户终端deviceID在此商家终端的认证有效。服务器发送信息给此用户终端。信息是根据商家终端预先设置的奖励信息以及商品促销信息等。信息也可以是服务器根据商家的位置坐标在互联网上搜索的商品信息以及促销信息等。用户终端展示信息给用户。
[0108] 商家终端放置在商场或某个地点,系统服务器数据库中设置此商家终端的位置坐标、MAC地址、识别号、商家名称等数据。辅助无线发射模块和商家终端被放置在同一商家内。辅助无线发射模块可以跟商家终端同一位置,也可以不在同一位置。系统服务器数据库中设置此辅助无线发射模块的位置坐标、MAC地址、识别号以及它隶属于哪个商家终端等数据。一个商家可以有多个辅助无线发射模块。在商家不安装商家终端和商家端数据库的情况下,在服务器数据库中设置辅助无线发射模块隶属于哪个商家。
[0109] 用户终端安装在智能手机或其它移动智能终端上,系统服务器数据库中保存有此用户终端ID、MAC地址等数据。
[0110] 系统设置一个任务,要求用户终端去完成。用户终端ID在商家终端的位置出现并认证就算完成任务并得到某种奖励。这个任务可以是多种目的,如新商品促销、广告宣传等,奖励也可以是实物、现金或虚拟物品。
[0111] 任务规则,包括任务的具体内容、认证时间有效性、商家终端地理坐标、奖励的奖品和数额等。
[0112] 系统发布任务,用户接受任务。发布任务的方式可以通过PUSH推送通知。服务器根据任务中的商家终端的位置,搜索一定范围内的任务潜在用户终端ID。用户终端ID在一定时间内在某个区域内出现一定次数即认定为潜在用户终端ID。潜在用户终端收到PUSH通知,打开用户终端软件,查看任务详情。
[0113] 任务也可以不通过PUSH发送通知。用户开启用户终端软件,用户软件发送任务请求给服务器,请求中的数据包括用户终端ID、目前用户终端的地理坐标。服务器收到请求后搜索数据库中的适合的任务。适合任务主要根据用户终端的地理坐标来筛选一定范围内的任务,同时也可以根据用户的兴趣来判断某些任务。服务器回复用户终端请求,把任务信息列表发送给用户终端。用户终端展示任务列表,用户点击后展示任务详情。
[0114] 用户根据任务指示到达任务指定地点。用户开启用户终端软件,开始ID认证。用户终端通过无线波搜索近距离的智能设备识别号、MAC地址等数据。发现智能设备后,用户终端把搜索到的数据(MAC地址、识别号等)跟用户端数据库中的所有有效识别号进行比对,如果发现任何一个吻合,把吻合的那组数据发送到服务器。
[0115] 商家终端开启后通过无线波不断搜索周围的智能设备的MAC地址、识别号等。这个无线波可以是蓝牙、WIFI等无线技术。这个搜索方式是循环的不断重复的。搜索的时长是变化的。如设第一次搜索时长为12秒。搜索完成后开始第二次搜索,时长设为第一次搜索的1/2,即6秒。第二次搜索完成后开始第三次搜索,时长设为第二次搜索的1/2,即3秒。如设备系统最小搜索时长是3秒,搜索的时长恢复到第一次的时长,即12秒重新开始搜索。每次搜索中发现周围智能设备的MAC地址、识别号等,首先在此商家端数据库中比对识别号、MAC地址等参数,如果跟预设的规则相符,把此次发现的参数发送给服务器。
[0116] 服务器收到商家终端的数据,这个数据可能是此商家终端已发现的智能设备的MAC地址和识别号的列表等数据。服务器用商家终端ID、商家终端MAC地址、被发现的智能设备的MAC地址和识别号等作为参数在服务器数据库中搜索。找到吻合的用户终端ID后,再搜索此用户终端ID的认证记录:如果没有发现此用户终端ID在这个商家终端的认证记录,服务器认定此次认证有效即任务完成并且在服务器数据库中记录此次认证成功的记录,包括认证的商家终端ID、认证时间、被认证的用户终端ID、用户终端的MAC地址和识别号、完成任务的号码等。服务器发送认证成功信息给用户终端。同时发送完成任务奖励的具体信息,包括虚拟货币和实物现金等给用户终端。
[0117] 如果发现此用户终端ID已在这个商家终端的认证记录,服务器对比此次任务的规则,包括认证间隔时长、每个用户终端ID允许的完成任务的次数等来判断此次认证是否有效。例如在任务规则中设定每个用户终端在24小时内只能完成一次有效任务;或者设置每个用户终端最多只能完成3次有效任务。如果符合规则,服务器认定此次认证有效即任务完成并且在服务器数据库中记录此次认证成功得记录,包括认证的商家终端ID、认证时间、被认证的用户终端ID、用户终端的MAC地址和识别号、完成任务的号码等。服务器发送认证成功信息给用户终端。同时发送完成任务奖励的具体信息,包括虚拟货币和实物现金等给用户终端。如果不符合规则,服务器发送认证失败信息给用户终端。
[0118] 在有用户终端ID认证成功的情况下,服务器发送认证成功信息给商家终端。信息中包括认证成功的用户终端MAC地址、用户终端ID、识别号、认证时间等数据。商家终端收到数据后保存此数据在商家终端数据库中。
[0119] 商家终端搜索和认证流程:
[0120] 步骤S1:商家终端开始搜索。搜索时长为T;
[0121] 步骤S2:商家终端开始第二次搜索。搜索时长为1/2T;
[0122] 步骤S3:商家终端开始第三次搜索。搜索时长为1/4T。搜索结束后,如设备允许的最小搜索时长为1/4T,重复步骤S1;
[0123] 步骤S4:在步骤S1、S2或S3中的任何一次结束后,如发现周围设备的MAC地址、识别号等,到商家数据库中比对;
[0124] 步骤S5:商家数据库返回比对结果;
[0125] 步骤S6:如步骤S5的结果符合预设规则,把数据(商家终端ID、商家终端MAC地址、被发现的智能设备的MAC地址和识别号)发送到服务器。
[0126] 步骤S7:服务器到服务器数据库查询;
[0127] 步骤S8:服务器数据库返回查询结果给服务器,符合预设规则认证有效;
[0128] 步骤S9:服务器返回认证结果给商家终端。
[0129] 当用户终端开始认证并获得周围智能设备的MAC地址、识别号等数据后,在用户端数据库中比对识别号、MAC地址等数据,如果跟预设的规则相符,用户终端发送认证请求信息给服务器。请求信息中包括用户终端ID、用户终端MAC地址、发现的商家终端或辅助无线发射模块的MAC地址和识别号。服务器收到用户终端的数据,这个数据可能是此用户终端已发现的商家终端的MAC地址和识别号的列表等数据。服务器用用户终端ID、已发现的商家终端MAC地址和识别号等作为参数在服务器数据库中搜索。首先搜索已发现的商家终端MAC地址和识别号在服务器数据库中是否存在。如果不存在,用户终端ID认证失败。服务器发送失败信息给用户终端。如果已发现的商家终端MAC地址和识别号在服务器数据库中存在,继续在服务器数据库中搜索,寻找此用户终端ID在已发现的商家终端的认证记录。如果发现此用户终端ID已在这个商家终端的认证记录,服务器对比此次任务的规则,包括认证间隔时长、每个用户终端ID允许的完成任务的次数等来判断此次认证是否有效。例如在任务规则中设定每个用户终端在24小时内只能完成一次有效任务;或者设置每个用户终端最多只能完成3次有效任务。如果符合规则,服务器认定此次认证有效即任务完成并且在服务器数据库中记录此次认证成功得记录,包括认证的商家终端ID、认证时间、被认证的用户终端ID、用户终端的MAC地址和识别号、完成任务的号码等。服务器发送认证成功信息给用户终端。同时发送完成任务奖励的具体信息,包括虚拟货币和实物现金等给用户终端。如果不符合规则,服务器发送认证失败信息给用户终端。
[0130] 上面所述的实施例仅是对本发明的优选实施方式进行描述,并非对本发明的构思和范围进行限定。在不脱离本发明设计构思的前提下,本领域普通人员对本发明的技术方案做出的各种变型和改进,均应落入到本发明的保护范围,本发明请求保护的技术内容,已经全部记载在权利要求书中。