具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)Android:一种基于Linux内核的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑。
2)iOS:一种由苹果公司开发的移动操作系统,与苹果的macOS操作系统一样,属于类Unix的商业操作系统,iOS最初是设计给iPhone使用的,后来陆续套用到iPod touch、iPad上。
3)Java:一门面向对象编程语言,具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
4)Object-C:一种在C语言的基础上加入面向对象特性扩充而成的编程语言,通常写作ObjC或OC和较少用的Objective C或Obj-C。在一定程度上,可以把Object-C看成是ANSI版本C语言的一个超集,它支持相同的C语言基本语法,同时它还扩展了标准的ANSI C语言的语法,包括定义类、方法和属性。Object-C主要使用于Mac OS X和GNUstep这两个使用OpenStep标准的系统。
5)JavaScript:简称JS,是一种具有函数优先的轻量级,解释型或即时编译型的高级编程语言。JS已经被广泛用于网络Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JS脚本是通过嵌入在超文本标记语言(HTML,Hyper Text Markup Language)中来实现自身的功能的。
6)物联网(IOT,The Internet of Things),指通过各种信息传感器、射频识别技术、全球定位系统、红外感应器、激光扫描器等各种装置与技术,实时采集任何需要监控、连接、互动的物体或过程,采集其声、光、热、电、力学、化学、生物、位置等各种需要的信息,通过各类可能的网络接入,实现物与物、物与人的泛在连接,实现对物品和过程的智能化感知、识别和管理。物联网是一个基于互联网、传统电信网等的信息承载体,它让所有能够被独立寻址的普通物理对象形成互联互通的网络。
7)软件开发工具包(SDK,Software Development Kit),一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等创建应用软件的开发工具的集合,一般而言SDK即开发Windows平台下的应用程序所使用的 SDK。它可以简单的为某个程序设计语言提供应用程序接口API的一些文件,但也可能包括能与某种嵌入式系统通讯的复杂的硬件。
为了更好地理解本申请实施例,首先对相关技术中与蓝牙智能设备兼容的Android App、iOS App和微信小程序这三种应用平台中的数据同步方法及存在的缺点进行说明。
用户使用智能蓝牙设备首先需要进行蓝牙配对,将终端应用平台与蓝牙设备进行绑定,图1为相关技术中终端应用平台与蓝牙设备的绑定流程示意图。这里,应用平台可以为Android App、iOS App和微信小程序中任意一种。
终端应用平台与蓝牙设备建立连接关系后,从蓝牙设备获取蓝牙设备采集的原数据,以进行数据同步。图2为相关技术中应用平台获取蓝牙设备采集的原数据的流程示意图,参见图2,采集数据的流程包括以下步骤:
步骤S201,将终端应用平台与对应的蓝牙设备建立连接。在该步骤中,终端应用平台打开蓝牙后,搜索与应用平台对应的蓝牙设备,搜索到时建立两者之间的连接关系。
步骤S202,发送同步请求。终端应用平台向蓝牙设备发送交互命令,以将蓝牙设备采集的原数据同步至应用平台中。
步骤S203,接收蓝牙设备采集的原数据,以在终端应用平台上同步蓝牙设备采集的数据。
步骤S204,校验并解析原数据。
步骤S205,对原数据进行处理,得到业务数据。终端应用平台对原数据进行解析、清洗、合并等处理,得到业务数据,在应用平台上输出业务数据。
步骤S206,发送业务数据至物联网(IOT,Internet of Things)云平台。
图3为Android App、iOS App和微信小程序各平台数据采集流程示意图,参见图3,Android App是基于Android平台、Java开发语言构建的。蓝牙设备数据采集需要根据Android系统提供的Java BLE SDK来实现Android App与蓝牙设备直接命令与数据交互实现上述步骤S201至步骤S206。Android App获取到的采集数据需要采用Java语言来实现后续处理逻辑。
参见图3,iOS App是基于iOS平台、Object-C开发语言构建的。蓝牙设备数据采集需要基于iOS蓝牙开发规范实现上述步骤S201至步骤S206。iOS App 获取到的采集数据需要采用Object-C语言来实现后续处理逻辑。
参见图3,微信小程序是基于JavaScript语言构建的。蓝牙设备数据采集需要基于微信小程序提供蓝牙API使用规范实现上述步骤S201至步骤S206,后续处理逻辑同以上两者。
相关技术中存在以下问题:
1)由于平台的差异性和开发语言的差异性,导致代码不具有可移植性和跨平台能力。Android App使用Java语言开发实现蓝牙设备数据采集流程的步骤 S201至步骤S206;iOS App使用Object-C开发实现蓝牙设备数据采集流程的步骤S201至步骤S206;微信小程序开发平台使用JavaScript语言实现蓝牙设备数据采集流程的步骤S201至步骤S206;如果需要适配更多开发平台,就需要重复实现上述步骤S201至步骤S206,代码不具有可移植性和跨平台能力。
2)Android App/iOS App上线之后,热修复漏洞(bug)比较困难,就需要频繁更新App版本,影响用户体验。尤其是Android平台很多的厂商都定制了自己的安卓系统,导致兼容性较差。
3)Android App/iOS App如果需要支持新类型的蓝牙设备,只能发布新版本App加入新类型的蓝牙设备,提示用户升级安装。
4)蓝牙协议相关的代码已打包到App中,恶意的第三方通过代码静态分析工具破解蓝牙协议,威胁蓝牙协议的安全性。
5)用户即使只使用一款蓝牙设备,因为App静态打包中包含了所有支持蓝牙设备相关的同步代码,导致下载的App数据量大。
为了解决上述问题,本申请实施例提供一种数据同步方法,所述方法应用于数据同步设备。本申请实施例提供的方法可以通过计算机程序来实现,该计算机程序在执行的时候,完成本申请实施例提供的数据同步方法中各个步骤。在一些实施例中,该计算机程序可以数据同步设备中的处理器执行。图4为本申请实施例提供的数据同步方法的一种实现流程示意图,如图4所示,所述数据同步方法包括以下步骤:
步骤S401,获取搜索出的目标蓝牙设备的设备类型,并获取与所述设备类型相对应的目标同步程序。
当需要同步蓝牙设备采集的数据时,在终端上打开蓝牙功能,若蓝牙设备的蓝牙也已打开,且在此之前终端与蓝牙设备曾经进行过配对连接,终端上存储有配置连接的历史数据,则确定该蓝牙设备为搜索出的目标蓝牙设备;若蓝牙设备的蓝牙已打开,但在此之前未进行配对连接,终端上未存储有配置连接的历史数据,从搜索出的多个蓝牙设备中确定待配对连接的蓝牙设备,将该待配对连接的蓝牙设备确定为搜索出的目标蓝牙设备;若不存在已打开蓝牙功能的蓝牙设备,则搜索失败,终端提示用户不存在已打开蓝牙功能的蓝牙设备。这里的目标蓝牙设备即为数据的采集装置。
当终端搜索到目标蓝牙设备时,进一步获取目标蓝牙设备的设备类型。不同的设备类型,对应不同的同步程序,同步平台基于该目标蓝牙设备的设备类型,获取目标同步程序,其中,所述目标同步程序能够跨平台使用。在实现时,终端在搜索目标蓝牙设备时,可以是在打开蓝牙功能的前提下,通过与目标蓝牙设备类型对应的应用平台发起蓝牙设备搜索,该应用平台可以为Android Ap p,还是iOS App,又或是微信小程序,例如目标蓝牙设备为运动手环时,该应用平台可以是终端上安装的运动健康App;还可以是在打开蓝牙功能时,直接发起蓝牙设备搜索。
需要说明的是,本申请实施例中,该应用平台中并没有集成有同步程序。因此,需要终端在通过搜索到目标蓝牙设备后,或者在通过启动蓝牙功能搜索并连接上目标蓝牙设备后启动该应用平台时,获取目标蓝牙设备的设备类型,进一步地,可以是通过终端中的同步平台获取目标蓝牙设备的设备类型,该同步平台可以为搜索引擎,例如浏览器的JS引擎。
本申请实施例中,无论应用平台是Android App,还是iOS App,又或是微信小程序,同步平台获取到的都是同一目标同步程序。在实际实现时,同步平台可以从终端自身的存储空间中获取目标同步程序,也可以从服务端获取目标同步程序。本申请实施例中,通过动态获取同步程序,使得同步程序代码无需打包于应用平台中,能够提高蓝牙协议的安全性。
步骤S402,加载并运行所述目标同步程序。
同步平台获取到目标同步程序后,将目标同步程序加载至目标引擎,如JS 引擎中,并在JS引擎中运行该目标同步程序。
本申请实施例中,同步程序代码无需打包于应用平台中,同步平台在获取到目标同步程序后,在目标引擎中运行该目标同步程序,使得目标蓝牙设备采集的数据,在同步时从应用平台这一静态编码方式转换为动态加载运行的方式,极大降低了蓝牙同步程序与应用平台的强耦合。当蓝牙设备增加新的业务功能或更新现有的业务功能时,获取到的目标同步程序发生改变,无需更新Androi d App或iOS App即可增加新功能,能够减少更新App的次数,提升用户体验。
步骤S403,基于预先定义的API连接所述目标蓝牙设备。
当目标同步程序成功运行后,此时可以进行终端与蓝牙设备之间的数据同步。而同步的前提是:终端上的应用平台与目标蓝牙设备之间的连接关系。由于目标同步程序是服务端编写的某一种语言的程序代码,可能与终端上安装的蓝牙设备的应用程序App或微信小程序的应用平台所采用的开发语言不同。为了使不同平台、不同语言使用同一套同步程序,将同步程序从应用平台中独立出来,在原生层与业务层的之间增加中间层,将预先定义的API封装在该中间层中。在连接目标蓝牙设备时,调用预先定义的用于连接目标蓝牙设备的特定 API,能够降低业务层与原生层的强耦合,屏蔽平台差异及开发语言的差异,实现不同平台、不同语言的业务层和原生层之间的连接。
步骤S404,获取所述目标蓝牙设备采集的原数据。
基于预先定义的API成功连接目标蓝牙设备之后,可以从目标蓝牙设备接收其采集的数据,以将目标蓝牙设备采集的数据同步至终端的应用平台中。
由于采集的数据是原数据,同步至终端的应用平台时,需要将原数据转换为业务数据,以便用户查看。同步平台利用目标同步程序,将原数据转换为业务数据并同步至应用平台中。
步骤S405,利用所述目标同步程序将所述原数据同步至自身的应用平台中。
获取到的原数据并非业务数据,非开发人员一般难以理解原数据的具体含义,因此,需要利用目标同步程序对原数据进行进一步的转换处理,得到同步数据,即为业务数据,以在目标蓝牙设备对应的App或微信小程序中显示业务数据,便于用户查看、理解。
本申请实施例提供的数据同步方法,获取搜索出的目标蓝牙设备的设备类型,并获取与所述设备类型相对应的目标同步程序,所述目标同步程序能够跨平台使用;加载并运行目标同步程序;基于预先定义的应用程序编程接口API 连接所述目标蓝牙设备,并获取所述目标蓝牙设备采集的原数据;利用所述目标同步程序将所述原数据同步至自身的应用平台中。如此,通过动态获取同步程序,同步程序代码无需打包于应用平台中,能够提高蓝牙协议的安全性;并且通过预先定义的API连接蓝牙设备,不仅能够降低业务层与原生层的强耦合、屏蔽平台差异及开发语言的差异,使得不同应用平台能够通用同一套同步程序,开发者无需维护多个应用平台,能够降低开发后期维护成本,而且能够增强业务扩展的灵活度,提升扩展能力。
本申请实施例再提供的一种数据同步方法,图5为本申请实施例提供的数据同步方法的另一种实现流程示意图,如图5所示,所述数据同步方法包括以下步骤:
步骤S501,响应于接收到的用于搜索蓝牙设备的搜索请求,广播所述搜索请求。
应用平台接收用于搜索目标蓝牙设备的搜索指令,基于该搜索指令,向同步平台发送用于搜索蓝牙设备的搜索请求,同步平台将该搜索请求进行广播,以搜索蓝牙通讯范围(一般最大为30米)内的蓝牙设备。
步骤S502,接收至少一个待连接蓝牙设备基于所述搜索请求返回的搜索响应。
当待连接蓝牙设备的蓝牙功能开启时,能够成功接收到广播的搜索请求,待连接蓝牙设备响应该搜索请求,将自身的属性信息携带于搜索响应中返回至终端。当终端搜索到蓝牙通讯范围内的多个蓝牙设备时,搜索响应中包括该多个蓝牙设备的属性信息,例如各蓝牙设备的名称、MAC地址等。
步骤S503,发送所述搜索响应至所述应用平台。
步骤S504,接收所述应用平台基于接收到的选择指令确定的目标蓝牙设备。
同步平台将搜索到的所有可连接的蓝牙设备的属性信息发送至应用平台,用户在应用平台上选择一个蓝牙设备作为目标蓝牙设备,应用平台将选择指令发送至同步平台,该选择指令中携带有选择的目标蓝牙设备的属性信息。
步骤S505,获取搜索出的目标蓝牙设备的设备类型,并获取与所述设备类型相对应的目标同步程序,所述目标同步程序能够跨平台使用。
步骤S506,加载并运行所述目标同步程序。
步骤S507,基于预先定义的API连接所述目标蓝牙设备。
步骤S508,获取所述目标蓝牙设备采集的原数据。
步骤S509,利用所述目标同步程序将所述原数据同步至自身的应用平台中。
本申请实施例中的步骤S505至步骤S509,实现方式及有益效果参见图4 所示实施例中的步骤S401至步骤S405中对应的描述。
本申请实施例提供的数据同步方法,在原生层与业务层的之间增加中间层,通过中间层确定目标蓝牙设备,能够降低业务层与原生层的强耦合、屏蔽平台差异及开发语言的差异。
在一些实施例中,图4所示实施例步骤S401或者图2所示实施例步骤S5 05中的“获取与所述设备类型相对应的目标同步程序”,可通过以下步骤来实现。
步骤S4011,检测自身存储空间中是否存储有与所述设备类型相对应的本地同步程序。
当检测到自身存储空间中存储有与设备类型相对应的本地同步程序时,表明预先已从服务端获取过同步程序,且将预先获取的同步程序作为本地同步程序保存在自身的存储空间中,此时,可以从自身存储空间中获取本地同步程序,进入步骤S4012;当自身存储空间中未存储有与设备类型相对应的本地同步程序时,需要从服务端获取目标同步程序,此时进入步骤S4013。
步骤S4012,将所述本地同步程序确定为目标同步程序。
本申请实施例中,若事先已从服务端下载过同步程序,且已将其保存在自身的存储空间中,当再次请求同步程序时,可直接将事先下载并保存在自身存储空间中的同步程序作为目标同步程序,无需从服务端重复下载同步程序,不仅能够提高获取同步程序的效率,而且能够减少数据的下载量,降低带宽的占用率。
在一些实施例中,步骤S4012“将所述本地同步程序确定为目标同步程序”可以通过以下步骤来实现:
步骤S40121,获取所述本地同步程序的本地属性信息。
这里,所述属性信息可以包括发布版本号、发布时间、大小、发布者等至少一个,相应的,所述本地属性信息为本地同步程序的发布版本号、发布时间、大小、发布者等至少一个。
步骤S40122,从服务端获取与所述设备类型相对应的当前同步程序的当前属性信息。
相应的,所述当前属性信息为当前从服务端获取目标蓝牙设备的当前同步程序的发布版本号、发布时间、大小、发布者等至少一个。
步骤S40123,判断所述本地属性信息与所述当前属性信息是否满足设定条件。
所述判断本地属性信息与当前属性信息是否满足设定条件,可以为判断本地属性信息与当前属性信息是否相同,或者,也可以为判断当前属性信息与本地属性信息的差值是否在预设范围内。例如,当属性信息为发布时间,本地同步程序的发布时间为2020年9月1日,当前从服务端获取目标蓝牙设备的同步程序的发布时间为2020年9月10日,当预设时间范围为30日,则当前属性信息与本地属性信息的差值在预设范围内,即本地属性信息与当前属性信息满足设定条件;当预设时间范围为3日,则当前属性信息与本地属性信息的差值不在预设范围内,即本地属性信息与当前属性信息不满足设定条件。
当本地属性信息与当前属性信息满足设定条件时,表明无需更新本地同步程序,此时进入步骤S40124;当本地属性信息与当前属性信息不满足设定条件时,表明需要更新本地同步程序,此时进入步骤S4013。
步骤S40124,将所述本地同步程序确定为目标同步程序。
步骤S4013,从服务端获取与所述设备类型相对应的当前同步程序。
步骤S4014,将所述当前同步程序确定为目标同步程序。
当本地同步程序无需更新时,确定本地同步程序即为目标同步程序;当本地同步程序需要更新时,从服务端重新获取目标蓝牙设备的当前同步程序,并将当前同步程序作为目标同步程序。
在一些实施例中,在步骤S4014之后,还可以包括步骤S4015,将所述当前同步程序存储至所述自身存储空间,作为新的本地同步程序。将当前同步程序存储至自身的存储空间时,可以是利用当前同步程序替换历史本地同步程序,以在存储空间中删除历史本地同步程序,回收存储空间,减少存储空间的浪费。
在一些实施例中,图4所示实施例中的步骤S403“基于预先定义的应用程序编程接口API连接所述目标蓝牙设备”可以实现为以下步骤:
步骤S4031,获取所述应用平台的平台属性。
这里,所述应用平台为发送所述搜索指令的应用平台,所述平台属性包括应用平台和开发语言,这里,所述应用平台可以为Android App或iOS App或微信小程序,各应用平台对应的开发语言可以为Java、Object-C和JavaScript。
步骤S4032,基于所述平台属性获取预先定义的用于连接所述设备类型的目标API。
中间层中封装了蓝牙功能的各种API,目前,预先定义的常用的API及其对应的功能如表1所示。
表1常用API及其功能
步骤S4033,利用所述目标API连接所述目标蓝牙设备。
基于上述预先定义的API可知,用于连接蓝牙设备的API为“createBLEC onnection”,基于该API连接终端与目标蓝牙设备。
在一些实施例中,为了确定是否连接成功,在步骤S4031或步骤S4032之前,还可以包括步骤S4030,注册用于连接目标蓝牙设备的回调函数“abc.crea teBLEConnection”。相应的,在步骤S4033之后,还包括步骤S4034,确定连接结果,并基于所述连接结果,响应所述回调函数。当连接成功时,响应成功回调;当连接失败时,响应失败回调。
在一些实施例中,在步骤S4032之前,所述方法还可以包括:确定是否存在连接所述目标蓝牙设备所需的目标运行环境,当不存在目标运行环境时,基于接收到的环境创建操作,创建所述目标运行环境。这里,所述目标运行环境可以为JS运行环境。
相应的,基于预先定义的API连接所述目标蓝牙设备,包括:在所述目标运行环境下,基于预先定义的API连接所述目标蓝牙设备。
同步程序处理目标蓝牙设备采集的原数据时,不同平台同一类型蓝牙设备通知数据格式是相同的,所以不同平台的处理逻辑是相同的。本申请实施例中,同步程序可使用JavaScript语言开发,运行在JS引擎中。
在一些实施例中,图4所示实施例中的步骤S405“利用所述目标同步程序将所述原数据同步至自身的应用平台中”,可以实现为以下步骤:
步骤S4051,对获取到的原数据进行校验处理,得到校验结果。
步骤S4052,判断所述校验结果是否为校验成功。
当所述校验结果为校验成功时,表明获取到的原数据是完整的,即传输数据的过程中没有丢失数据,此时进入步骤S4053;当所述校验结果不为校验成功,即为校验失败时,表明获取到的原数据不完整,此时进入步骤S404,重新获取目标蓝牙设备采集的原数据。
步骤S4053,解析所述原数据,得到解析数据。
步骤S4054,对所述解析数据进行转换和清洗处理,得到待同步数据。
转换处理是将解析数据转换为业务数据,以在应用平台中输出,便于用户查看。
清洗处理是将转换后得到的业务数据进行检查、纠正,业务数据中可能存在无效值、缺失值等,通过清洗处理,得到待同步数据。
步骤S4055,利用所述目标同步程序将所述待同步数据同步至自身的应用平台中。
应用平台接收到待同步数据,将其按照设定的方式输出,例如,可直接输出数值,也可以图表形式输出,或者根据用户自定义的方式输出。
在一些实施例中,在步骤S4055之后,还可以将待同步数据发送至服务端,例如,发送至IOT云端,以使服务端结合待同步数据,了解用户穿戴设备采集的体征数据,向用户提供个性化的服务。
本申请实施例再提供一种数据同步方法,图6为本申请实施例提供的数据同步方法的又一种实现流程示意图,如图6所示,所述方法包括以下步骤:
步骤S601,响应于接收到的用于搜索蓝牙设备的搜索指令,发送用于搜索蓝牙设备的搜索请求至同步平台。
本申请实施例的方法可以是由终端来实现的,进一步地,可以是移动终端上的应用平台,如Android App、iOS App或小程序。
当需要同步蓝牙设备采集的数据时,用户在终端上打开应用平台,例如打开Android App,在App中点击搜索蓝牙设备的按键,则应用平台接收到搜索指令,该搜索指令用于搜索蓝牙设备。响应于该搜索指令,应用平台发送搜索请求至同步平台,以使同步平台基于该搜索请求向服务端请求搜索蓝牙设备。
步骤S602,接收所述同步平台基于所述搜索请求返回的搜索响应。
这里,所述搜索响应中携带搜索到的各个蓝牙设备。
同步平台接收到搜索请求后,广播该搜索请求,当待连接蓝牙设备的蓝牙功能开启时,能够成功接收到广播的搜索请求,待连接蓝牙设备响应该搜索请求,将自身的属性信息携带于搜索响应中返回至同步平台,然后,同步平台将搜索响应发送至应用平台。
步骤S603,响应于接收到的针对所述各个蓝牙设备的选择指令,确定目标蓝牙设备。
应用平台接收到搜索响应后,在其显示界面显示搜索响应中携带的可连接蓝牙设备的属性信息,例如,在App中显示各蓝牙设备的名称或MAC地址等信息,用户根据自身需求,选择其中一个蓝牙设备作为待连接的目标蓝牙设备。
步骤S604,基于所述同步平台获取待同步数据。
其中,所述待同步数据由所述同步平台基于所述目标蓝牙设备采集的原数据获取得到。
应用平台确定了目标蓝牙设备后,同步平台即可确定该目标蓝牙设备的设备类型,不同的设备类型,对应不同的同步程序,同步平台基于该目标蓝牙设备的设备类型,获取目标同步程序,其中,所述目标同步程序能够跨平台使用。同步平台获取到目标同步程序,在目标引擎,例如JS引擎中加载并运行该目标同步程序,然后基于预先定义的API成功连接目标蓝牙设备之后,可以从目标蓝牙设备接收其采集的数据,以将目标蓝牙设备采集的数据同步至终端的应用平台中。
同步平台获取目标同步程序时,无论应用平台是Android App,还是iOS App,又或是微信小程序,其获取到的都是同一目标同步程序。本申请实施例中,通过动态获取同步程序,使得同步程序代码无需打包于应用平台中,能够提高蓝牙协议的安全性。
本申请实施例中,应用平台和服务端之间通过同步平台进行数据同步,极大降低了蓝牙同步程序与应用平台的强耦合、屏蔽平台差异及开发语言的差异。当蓝牙设备增加新的业务功能或更新现有的业务功能时,获取到的目标同步程序发生改变,无需更新Android App或iOS App即可增加新功能,能够减少更新App的次数,提升用户体验。
本申请实施例提供的数据同步方法,响应于接收到的用于搜索蓝牙设备的搜索指令,发送用于搜索蓝牙设备的搜索请求至同步平台;接收所述同步平台基于所述搜索请求返回的搜索响应,所述搜索响应中携带搜索到的各个蓝牙设备;响应于接收到的针对所述各个蓝牙设备的选择指令,确定目标蓝牙设备;基于所述同步平台获取待同步数据,其中,所述待同步数据由所述同步平台基于所述目标蓝牙设备采集的原数据获取得到。如此,通过动态获取同步程序,同步程序代码无需打包于应用平台中,能够提高蓝牙协议的安全性;并且通过预先定义的API连接蓝牙设备,不仅能够降低业务层与原生层的强耦合、屏蔽平台差异及开发语言的差异,使得不同应用平台能够通用同一套同步程序,开发者无需维护多个应用平台,能够降低开发后期维护成本,而且能够增强业务扩展的灵活度,提升扩展能力。
在上述实施例的基础上,本申请实施例再提供一种数据同步方法,图7为本申请实施例提供的数据同步方法的再一种实现流程示意图,如图7所示,所述方法包括以下步骤:
步骤S701,应用平台接收用于搜索蓝牙设备的搜索指令。
步骤S702,应用平台发送用于搜索蓝牙设备的搜索请求至同步平台。
步骤S703,同步平台广播所述搜索请求。
步骤S704,蓝牙设备基于所述搜索请求,返回搜索响应至同步平台。
步骤S705,同步平台发送所述搜索响应至所述应用平台。
步骤S706,应用平台响应于接收到的选择指令,确定目标蓝牙设备。
步骤S707,应用平台发送通知信息至同步平台。
这里,所述通知信息中携带有目标蓝牙设备的标识信息,以使同步平台获知搜索出的目标蓝牙设备为哪个蓝牙设备。
步骤S708,同步平台获取搜索出的目标蓝牙设备的设备类型。
步骤S709,同步平台检测终端存储空间中是否存储有与所述设备类型相对应的本地同步程序。
当终端的存储空间中存储有本地同步程序时,表明预先已从服务端获取过同步程序,此时,可以从自身存储空间中获取本地同步程序,进入步骤S710;当终端的存储空间中未存储有本地同步程序时,需要从服务端获取同步程序,此时进入步骤S711。
步骤S710,同步平台将所述本地同步程序确定为目标同步程序。
步骤S711,同步平台从服务端获取与所述设备类型相对应的当前同步程序。
步骤S712,同步平台将所述当前同步程序确定为目标同步程序。
这里,所述目标同步程序能够跨平台使用。
步骤S713,同步平台加载并运行所述目标同步程序。
步骤S714,同步平台获取所述应用平台的平台属性。
这里,所述应用平台为发送所述搜索指令的应用平台。
步骤S715,同步平台确定是否存在连接所述目标蓝牙设备所需的目标运行环境。
当存在连接所述目标蓝牙设备所需的目标运行环境时,可直接在该目标运行环境中进行终端与目标蓝牙设备之间的连接操作,此时进入步骤S717;当不存在目标运行环境时,进入步骤S716。
步骤S716,同步平台基于接收到的环境创建操作,创建所述目标运行环境。
目标运行环境可以为JS运行环境。
步骤S717,同步平台在所述目标运行环境中,基于所述平台属性获取预先定义的用于连接所述设备类型的目标API。
步骤S718,同步平台利用所述目标API连接所述目标蓝牙设备。
步骤S719,同步平台获取所述目标蓝牙设备采集的原数据。
步骤S720,同步平台对获取到的原数据进行校验处理,得到校验结果。
当所述校验结果为校验成功时,表明获取到的原数据是完整的,此时进入步骤S721;当所述校验结果为校验失败时,表明获取到的原数据不完整,此时进入步骤S719,重新获取目标蓝牙设备采集的原数据。
步骤S721,同步平台解析所述原数据,得到解析数据。
步骤S722,同步平台对所述解析数据进行转换和清洗处理,得到待同步数据。
步骤S723,同步平台利用所述目标同步程序将所述待同步数据同步至自身的应用平台中。
步骤S724,同步平台发送所述待同步数据至服务端。
在一些实施例中,同步平台也可以将待同步数据发送至IOT云平台。
本申请实施例提供的数据同步方法,通过动态获取同步程序,同步程序代码无需打包于应用平台中,能够提高蓝牙协议的安全性;并且通过预先定义的API连接蓝牙设备,不仅能够降低业务层与原生层的强耦合、屏蔽平台差异及开发语言的差异,使得不同应用平台能够通用同一套同步程序,开发者无需维护多个应用平台,能够降低开发后期维护成本,而且能够增强业务扩展的灵活度,提升扩展能力。
下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。
低功耗蓝牙(BLE)由于其低功耗在智能穿戴终端中应用广泛,智能手表、智能手环,几乎所有和智能沾边的设备,都是依靠这个技术与手机进行无线连接和数据交互的。低功耗蓝牙技术可以实现短距离通信的最低功耗,这将大大延长可穿戴设备的工作时间。
随着医疗设备技术的进步,与可穿戴设备兼容的智能手机医疗保健应用程序越来越多,医疗服务供应商对无线连接青睐越来越明显,以及大众对身体健康的重视度日渐增加,可穿戴医疗设备产业迎来爆发式增长。图8为可穿戴医疗器械市场总销售额的示意图,参见图8,2016年全球可穿戴医疗器械市场总销售额为20亿美元,2017年为23.94亿美元,2018年超过30亿美元,预计2 023年有望超过60亿美元,产业发展充满活力。
健康医疗设备通常是可穿戴产品或其它小型物品,借助BLE蓝牙模块,图 9为采集的生理数据的同步流程示意图,参见图9,健康医疗设备中的传感器9 1实时采集到的健康数据传输给蓝牙模块92的微控制单元(MCU,Micro Con troller Unit),由MCU计算得到生理数据的数值,一方面可以把准确值通过对应接口显示到发光二极管(LED,LightEmitting Diode)屏上;另一方面也可以把健康数据通过BLE蓝牙模块透传至手机App93,手机App93负责接收和分析接收到的健康数据,从而实现在手机端实时监控生理数据的数值。再一方面,也可以把健康数据通过BLE蓝牙模块透传至IOT平台94,从而实现用户远程地使用电子设备95监控生理数据的数值。
目前穿戴设备几乎都兼容三种平台:Android App、iOS App、微信小程序,各平台数据采集的实现步骤如图3所示。
基于图3所示步骤,可知相关技术中存在以下问题:
1)由于平台差异性,开发语言差异性。Android App使用Java语言开发实现蓝牙设备数据采集具体流程6个步骤;iOS App使用Object-C开发实现蓝牙设备数据采集具体流程6个步骤;微信小程序开发平台使用JavaScript语言实现蓝牙设备数据采集具体流程6个步骤;如果需要适配更多开发平台,就需要重复实现上述6个步骤,代码不具有可移植性和跨平台能力。
2)Android App/iOS App上线之后,修复bug比较困难(热修复),就需要频繁版本更新,影响用户体验。尤其是Android平台很多的厂商都定制了自己的安卓系统,带来的兼容性问题比较大。
3)Android App/iOS App如果需要支持新类型蓝牙设备,也只能发布新版 App加入,提示用户升级安装。
4)蓝牙协议相关的代码已打包到App中。通过代码静态分析工具,容易被同行破解。
5)用户即使只使用一款蓝牙设备,也需要下载一个庞大的App。因为Ap p(静态打包)中包含了所有支持蓝牙设备相关的同步代码。
基于上述技术问题,确定本申请的技术方案的详细阐述:
经过大量调研,和实际多种类型蓝牙设备接入代码实战发现,三种平台接入任一种蓝牙设备,读取到数据之后处理处理和算法逻辑是相同,只有对Nati ve BLE SDK差异较大。从另外一个角度蓝牙同步功能抽象为两部分:1)终端 (手机)与蓝牙设备交互部分;2)获取蓝牙数据后续处理。
为解决上述问题,本申请实施例中引入中间层设计思想:主要目的是屏蔽底层差异性,并给上层提供一致的接口,它是对上层负责的,但是却需要面对底层无规则、无协议、环境复杂的问题。它通过把不同平台的差异给屏蔽掉后,这样上层可以专注于解决业务,而不需要耗费精力去解决差异型。根据面向对象思想,三种不同平台实现的Native BLE SDK,可以认为使用蓝牙三种具体实现。
图10为本申请实施例中各应用平台数据采集流程示意图,如图10所示,蓝牙同步架构方案包括原生层、中间层和业务层。
1)原生层,Native BLE SDK部分:与蓝牙设备直接交互,不同平台实现方式,开发语言不同,实现方式也可能不同。
2)中间层:用于解耦业务层与原生层强依赖,屏蔽平台,语言的差异。位于原生层与业务层之间,对上层提供统一一致的JS BLE API。
根据自身平台特性,预先定义的常用的API及其对应的功能如上述表1所示。
3)业务层:处理蓝牙数据操作,可以认为是对于App功能中属于业务部分,不同类型蓝牙设备存在不同数据处理规则。但是不同平台同一类型蓝牙设备notify数据格式是相同的,所以处理逻辑在不同平台是共用的。改造之后统一业务层使用JavaScript语言开发,运行在JavaScript引擎。
本申请实施例中,通过跨平台实现智能蓝牙设备同步只需一套JavaScript 代码方案,通过提供中间层,屏蔽平台差异,开发语言差异,做的蓝牙同步可移植,具有通用性。并且,蓝牙同步程序从客户端静态编码在App转换为后端控制方式,极大降低了蓝牙同步与平台强耦合,提升扩展能力。同时能够保证 App快速适用新设备能力,热修复能力。
下面以初始化蓝牙模块为例,图11(a)至(c)分别为Android App、iO S App和微信小程序这三个应用平台的初始化蓝牙模块的实现流程示意图。
在Android App应用平台,加入J2V8引擎,J2V8是基于Google的JavaS cript引擎V8的Java开源项目,实现Java和JavaScript的相互调用,并对Andr oid平台提供支持。通过J2v8 API接口采用原生平台Java代码实现蓝牙的18 个API,对上层提供JavaScript BLEAPI。在Android App应用平台,初始化蓝牙模块的实现流程如图11(a)。
在iOS App应用平台,加入JavaScriptCore引擎,JavaScriptCore是Safari 的JavaScript引擎,在iOS7之后苹果开放了JavaScriptCore框架,开发者可以通过其提供的OC接口来使用JavaScriptCore。通过JavaScriptCore接口采用原生平台Object-C实现蓝牙18个API,对上层提供JavaScript BLE API。在iOS App应用平台,初始化蓝牙模块的实现流程如图11(b)。
微信小程序运行环境JavaScript。只需封装微信提供同Android/iOS相同的 JSBLE API即可。在微信小程序应用平台中,初始化蓝牙模块的实现流程如图11(c)。
经过上述步骤,Android App、iOS App和微信小程序这三个应用平台中,业务代码都可以运行在各自的JavaScript引擎中。图12为本申请实施例中蓝牙同步数据的流程示意图,如图12所示,通过调用统一的JS BLE API就可以和蓝牙设备进行命令、数据交互。只需在任意一个平台编写、调试之后无需任何变动就可以运行在其他平台,因此只需编写一种代码,该代码的内容包含:1) 连接指定设备;2)连接成功后,发送交互命令;3)同步并收集设备通知数据; 4)校验、解析蓝牙数据协议;5)数据转化业务数据,业务数据解析,清洗,合并等处理;6)数据上传云端。
热更新实现方案:所有支持的蓝牙设备类型及其对应蓝牙同步程序存储于后台服务端,当用户绑定对应类型蓝牙设备后。动态获取蓝牙设备程序;当检测到同步程序版本发生变动后重新获取新的蓝牙同步程序。同步程序下发到A pp过程采用压缩、动态加密、传输加密、多次校验客户端合法性方式保证蓝牙协议安全性。
根据原生App后台运行能力,封装为JS API,提供蓝牙同步后台运行能力。
本申请实施例通过上述方案,三种平台(Android App/iOS App/微信小程序)使用同一套蓝牙设备采集代码,一种蓝牙设备同步程序在其中一个平台开发、调试,正常运行,移植到其他平台依然可以正常运行;支持动态加入新类型蓝牙设备,绑定新类型蓝牙设备后立即生效,而不是用户频繁卸载安装新版的App方式;提供蓝牙功能模块热修复能力,实现一种快速、低成本修复App 缺陷的方案;解决蓝牙协议静态打包在App方式,保护智能设备厂商知识版权。
本申请实施例提供的数据的同步方案,带来以下有益效果:1)用户者角度:提升用户体验,无需经常更新App即可接入新设备,使用新功能。2)开发者角度:多平台只需维护一套代码,降低开发后期维护成本,提升程序稳定性;不用总上线新版本;不同设备类型同步程序是物理隔离,其中一个出现错误也不会关联影响其他设备正常使用;每个设备都可以自由配置日志信息,方便开发人员快速定位解决问题。3)蓝牙厂商角度:保护了蓝牙协议安全性,自身知识产权和利益。4)本方案不仅保证同步蓝牙设备采集数据性能,简单易用。5)支持蓝牙后台运行,能够保持数据同步程序在后台长时间运行,解决心电贴等设备数据量大场景。
基于前述的实施例,本申请实施例提供一种数据同步装置,该装置包括的各模块、以及各模块包括的各单元,可以通过计算机设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(CPU,Central ProcessingUnit)、微处理器(MPU,Microprocessor Unit)、数字信号处理器(DSP,Digital SignalProcessing)或现场可编程门阵列(FPG A,Field Programmable Gate Array)等。
本申请实施例再提供一种数据同步装置,图13为本申请实施例提供的数据同步装置的组成结构示意图,如图13所示,所述数据同步装置130包括:
第一获取模块131,用于获取搜索出的目标蓝牙设备的设备类型,并获取与所述设备类型相对应的目标同步程序,所述目标同步程序能够跨平台使用;
加载模块132,用于加载并运行所述目标同步程序;
连接模块133,用于基于预先定义的应用程序编程接口API连接所述目标蓝牙设备;
第二获取模块134,用于获取所述目标蓝牙设备采集的原数据;
同步模块135,用于利用所述目标同步程序将所述原数据同步至自身的应用平台中。
在一些实施例中,所述方法还可以包括:
广播模块,用于响应于接收到的用于搜索蓝牙设备的搜索请求,广播所述搜索请求;
第一接收模块,用于接收至少一个待连接蓝牙设备基于所述搜索请求返回的搜索响应;
第一发送模块,用于发送所述搜索响应至所述应用平台;
第二接收模块,用于接收所述应用平台基于接收到的选择指令确定的目标蓝牙设备。
在一些实施例中,所述第一获取模块131,进一步包括:
检测子模块,用于检测自身存储空间中是否存储有与所述设备类型相对应的本地同步程序;
第一确定子模块,用于当自身存储空间中存储有所述本地同步程序时,将所述本地同步程序确定为目标同步程序。
在一些实施例中,所述第一确定子模块,进一步包括:
第一获取单元,用于获取所述本地同步程序的本地属性信息;
第二获取单元,用于从服务端获取与所述设备类型相对应的当前同步程序的当前属性信息;
确定单元,用于当所述本地属性信息与所述当前属性信息满足设定条件时,将所述本地同步程序确定为目标同步程序。
在一些实施例中,所述第一获取模块131,进一步包括:
第一获取子模块,用于当自身存储空间中未存储有所述本地同步程序,或者当所述本地属性信息与所述当前属性信息不满足设定条件时,从服务端获取与所述设备类型相对应的当前同步程序;
第二确定子模块,用于将所述当前同步程序确定为目标同步程序。
在一些实施例中,所述连接模块133,进一步包括:
第二获取子模块,用于获取所述应用平台的平台属性,所述应用平台为发送所述搜索指令的应用平台;
第三获取子模块,用于基于所述平台属性获取预先定义的用于连接所述设备类型的目标API;
连接子模块,用于利用所述目标API连接所述目标蓝牙设备。
在一些实施例中,所述方法还包括:
第一确定模块,用于确定是否存在连接所述目标蓝牙设备所需的目标运行环境;
创建模块,用于当不存在目标运行环境时,基于接收到的环境创建操作,创建所述目标运行环境;
相应的,所述连接模块133,还用于:
在所述目标运行环境下,基于预先定义的API连接所述目标蓝牙设备。
在一些实施例中,所述同步模块135,进一步包括:
校验子模块,用于对获取到的原数据进行校验处理,得到校验结果;
解析子模块,用于当所述校验结果为校验成功时,解析所述原数据,得到解析数据;
处理子模块,用于对所述解析数据进行转换和清洗处理,得到待同步数据;
同步子模块,用于利用所述目标同步程序将所述待同步数据同步至自身的应用平台中。
在一些实施例中,所述方法还包括:
第二发送模块,用于发送所述待同步数据至服务端。
本申请实施例提供一种数据同步装置,所述装置包括:
第三发送模块,用于响应于接收到的用于搜索蓝牙设备的搜索指令,发送用于搜索蓝牙设备的搜索请求至同步平台;
第三接收模块,用于接收所述同步平台基于所述搜索请求返回的搜索响应,所述搜索响应中携带搜索到的各个蓝牙设备;
第二确定模块,用于响应于接收到的针对所述各个蓝牙设备的选择指令,确定目标蓝牙设备;
第三获取模块,用于基于所述同步平台获取待同步数据,所述待同步数据由所述同步平台基于所述目标蓝牙设备采集的原数据获取得到。
这里需要指出的是:以上数据同步装置实施例项的描述,与上述方法描述是类似的,具有同方法实施例相同的有益效果。对于本申请数据同步装置实施例中未披露的技术细节,本领域的技术人员请参照本申请方法实施例的描述而理解。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的数据同步方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,ReadOnly Memory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
相应地,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述实施例中提供的数据同步方法中的步骤。
本申请实施例提供一种数据同步设备,图14为本申请实施例提供的数据同步设备的组成结构示意图,根据图14示出的数据同步设备140的示例性结构,可以预见数据同步设备140的其他的示例性结构,因此这里所描述的结构不应视为限制,例如可以省略下文所描述的部分组件,或者,增设下文所未记载的组件以适应某些应用的特殊需求。
图14所示的数据同步设备140包括:一个处理器141、至少一个通信总线 142、用户接口143、至少一个外部通信接口144和存储器145。其中,通信总线142配置为实现这些组件之间的连接通信。其中,用户接口143可以包括显示屏,外部通信接口144可以包括标准的有线接口和无线接口。其中,所述处理器141配置为执行存储器中存储的数据同步方法的程序,以实现上述实施例提供的数据同步方法中的步骤。
以上数据同步设备和存储介质实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请数据同步设备和存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台AC执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。