一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于混合技术栈的跨平台原生功能调用方法及相关设备与流程

2022-07-13 17:34:41 来源:中国专利 TAG:


1.本发明属于计算机应用领域,尤其涉及一种基于混合技术栈的跨平台原生功能调用方法及相关设备。


背景技术:

2.目前,在移动端平台(如android系统平台和ios系统平台)上运行应用程序(也即app)时,应用程序常常需要调用原生功能(例如获取设备信息、拨打电话、网络接口调用等)以支撑该应用程序的正常运行,从而减少应用程序的代码开发量。
3.发明人发现现有的应用程序主要有以下三种跨平台调用原生功能的方式:第一种方式为基于web内核(也即web前端技术栈)来调用原生功能,这种调用原生功能的方式的优点在于无需引入外部框架,缺点在于使用不方便;第二种方式为基于web内核(也即web前端技术栈)内部封装的jsbridge来调用原生功能,这种调用原生功能的方式的优点在于使用方便,缺点在于引入了外部框架;第三种方式方式为基于react native内核(也即rn内核)来调用原生功能,这种调用原生功能的方式的可用第三方控件较少,严重依赖于官方(facebook)的维护,使用较不方便。
4.发明人发现上述三种跨平台调用原生功能的方式没有被整合在一起,从而使现有的应用程序跨平台调用原生功能较为不方便,进而使现有的应用程序的开发成本和维护成本较高,有必要进行改进。


技术实现要素:

5.本发明实施例提供一种基于混合技术栈的跨平台原生功能调用方法及相关设备,以解决现有的应用程序跨平台调用原生功能较为不方便,从而使现有的应用程序的开发成本和维护成本较高问题。
6.本发明的技术方案为:一种基于混合技术栈的跨平台原生功能调用方法,包括:
7.根据用户的操作指令获取预设在业务层的用户操作页面,所述用户操作页面为基于web前端技术栈的多个第一页面中的其中一个页面,或基于react native技术栈的多个第二页面中的其中一个页面;
8.获取所述用户操作页面所产生的数据请求,其中,所述数据请求包括接口参数和调用数据信息;
9.根据所述接口参数获取预设在组件层的已封装导航接口,所述已封装导航接口有多个;
10.根据所述已封装导航接口获取预设在驱动层的业务驱动通道,所述业务驱动通道为由所述已封装导航接口指向预设的原生底层的通信渠道,所述业务驱动通道包括基于web前端技术栈的第一通道,以及基于react native技术栈的第二通道;
11.根据所述调用数据信息获取预设在所述驱动层的原生名称,所述原生名称为能实现所述数据请求的原生功能所对应的注册名称;
12.根据所述原生名称调用预设在原生底层的所述原生功能。
13.可选地,所述根据所述已封装导航接口获取预设在驱动层的业务驱动通道,包括:根据所述已封装导航接口获取预设在驱动层的统一驱动入口,所述统一驱动入口为每个所述已封装导航接口的方法调用入口;通过所述统一驱动入口对所述数据请求进行解析,得到第一解析结果;根据所述第一解析结果获取能响应所述数据请求的桥协议,根据所述桥协议获取业务驱动通道,所述桥协议包括基于web前端技术栈的第一协议,和基于react native技术栈的第二协议。
14.可选地,所述根据所述桥协议获取业务驱动通道,包括:判断所述桥协议是否与所述第一通道相对应,若是,则将所述第一通道作为响应所述数据请求的业务驱动通道;若否,则将所述第二通道作为响应所述数据请求的业务驱动通道。
15.可选地,所述根据所述调用数据信息获取预设在所述预设驱动层的原生名称,包括:获取预设在驱动层的统一驱动出口;根据所述调用数据信息确定能实现所述数据请求的原生功能;根据所述原生功能获取预设在所述预设驱动层的原生名称。
16.可选地,所述根据所述调用数据信息获取预设在所述预设驱动层的原生名称,还包括:判断所述原生底层内是否有与所述原生名称对应的原生功能;若是,则调用所述原生功能;若否,则结束所述基于混合技术栈的跨平台原生功能调用方法。
17.可选地,所述原生功能包括多个根据不同的业务场景所设置的原生场景功能,所述根据所述原生名称调用预设在原生底层的所述原生功能之后,还包括:根据所述原生名称获取预设在原生底层且与所述原生功能对应的原生调用接口,所述原生调用接口有多个,每个原生调用接口包括多个根据不同业务场景设置且与所述原生场景功能对应的原生场景接口;获取用户身份信息,根据所述用户身份信息和原生名称获取原生场景接口;根据所述原生场景接口获取对应的原生场景功能。
18.可选地,所述根据所述原生名称调用预设在原生底层的所述原生功能之后,还包括:获取所述原生功能的执行结果,根据所述桥协议将所述执行结果依次返回至所述业务驱动通道、所述已封装导航接口和所述用户操作页面。
19.本发明的另一技术方案为:一种基于混合技术栈的跨平台原生功能调用装置,包括:
20.页面获取模块,用于根据用户的操作指令获取预设在业务层的用户操作页面,所述用户操作页面为基于web前端技术栈的多个第一页面中的其中一个页面,或基于react native技术栈的多个第二页面中的其中一个页面;
21.数据请求获取模块,用户获取所述用户操作页面所产生的数据请求,其中,所述数据请求包括接口参数和调用数据信息;
22.封装接口获取模块,用于根据所述接口参数获取预设在组件层的已封装导航接口,所述已封装导航接口有多个;
23.驱动通道获取模块,用于根据所述已封装导航接口获取预设在驱动层的业务驱动通道,所述业务驱动通道为由所述已封装导航接口指向预设的原生底层的通信渠道,所述业务驱动通道包括基于web前端技术栈的第一通道,以及基于react native技术栈的第二通道;
24.原生名称获取模块,用于根据所述调用数据信息获取预设在所述驱动层的原生名
称,所述原生名称为能实现所述数据请求的原生功能所对应的注册名称;
25.原生功能获取模块,用于根据所述原生名称调用预设在原生底层的所述原生功能。
26.本发明的另一技术方案为:提供一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述基于混合技术栈的跨平台原生功能调用方法的步骤。
27.本发明的另一技术方案为:提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述基于混合技术栈的跨平台原生功能调用方法的步骤。
28.本发明的有益效果如下:
29.1、本发明通过用户的操作指令所选取的用户操作页面能确定该用户操作页面所采用的混合技术栈类型(web前端技术栈或react native技术栈),并通过用户在点击用户操作页面时产生的数据请求能确定实现上述数据请求所需要调用的原生功能,这样,本发明即可根据所需要调用的原生功能选取合适的已封装导航接口,并根据混合技术栈类型选取合适的业务驱动通道(基于web前端技术栈的第一通道或基于react native技术栈的第二通道),该业务驱动通道为由所述已封装导航接口指向预设的原生名称的通讯渠道,最后,本发明即可通过上述原生名称找到相应的原生功能,以让上述被找到的原生功能实现用户操作页面时产生的数据请求,从而让应用程序能较方便地跨平台调用原生功能,进而使现有的应用程序的开发成本和维护成本较低。
30.2、统一驱动入口不仅能作为所有已封装导航接口的统一接口,以让本发明的更加方便的调用原生功能,还能对本发明所述数据请求进行解析(对数据请求进行json编码、组装等),从而选择出合适的桥协议,进而选择出合适的业务驱动通道;统一驱动入口不仅能作为所有原生功能的统一接口,以让本发明更方便地选取到合适的原生名称,还能够作为所有原生功能的执行结果的接收端口,从而让本发明能更方便的将上述原生功能的执行结果返回至合适的业务驱动通道。
附图说明
31.为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
32.图1是本发明第一实施例中基于混合技术栈的跨平台原生功能调用方法的流程示意图;
33.图2是本发明第一实施例中跨平台通讯框架的结构示意图;
34.图3为本发明第二实施例的基于混合技术栈的跨平台原生功能调用装置的结构示意图;
35.图4为本发明第三实施例的电子设备的结构示意图;
36.图5为本发明第四实施例的存储介质的结构示意图。
具体实施方式
37.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
38.本发明中的术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括至少一个该特征。本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。本发明实施例中所有方向性指示(诸如上、下、左、右、前、后
……
)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
39.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
40.图1为本发明第一实施例的基于混合技术栈的跨平台原生功能调用方法的流程示意图。需注意的是,若有实质上相同的结果,本发明的方法并不以图1所示的流程顺序为限。如图1所示,该基于混合技术栈的跨平台原生功能调用方法包括步骤:
41.s1、根据用户的操作指令获取预设在业务层的用户操作页面,所述用户操作页面为基于web前端技术栈的多个第一页面中的其中一个页面,或基于react native技术栈的多个第二页面中的其中一个页面;
42.本实施例中,用户在应用程序上所产生的操作指令用于指向业务层中的某一个用户操作页面,该用户操作页面可以为基于web前端技术栈的多个第一页面中的其中一个页面,也可以为基于react native技术栈的多个第二页面中的其中一个页面。上述应用程序可以为安装在andriod手机(平台)上的应用程序,也可以为安装在ios手机(平台)上的应用程序,同时,本技术的应用程序可以为口袋app、银保app等。
43.本实施例中,业务层是布置在跨平台通讯框架上,用户的操作指令中包含预设的指令参数,该指令参数能让不同的应用程序(如口袋app和银保app)指向跨平台通讯框架上的业务层中的某个页面(也即用户操作页面,例如活动页面),也能让该页面(例如活动页面)将在原生底层中所调用的原生功能返回至该应用程序(如口袋app和银保app)中。
44.s2、获取所述用户操作页面所产生的数据请求,其中,所述数据请求包括接口参数和调用数据信息;
45.用户操作页面所产生的数据请求用于指示调用移动端平台的原生功能,该数据请求包括预设的接口参数和调用数据信息,该接口参数主要对应着预设在组件层的某个(或某几个)已封装导航接口,以让本技术更加方便的在原生底层找到合适的某个(或某几个)
原生功能;调用数据信息主要对应着预设在驱动层的某个(或某几个)原生名称,以便于本技术调用相应的原生功能。
46.本实施例中,原生功能具体指的是移动端平台为移动端提供的应用功能,例如获取设备信息、获取网络信息、网络接口调用、定位、拨打电话、发送短信等应用功能。
47.s3、根据所述接口参数获取预设在组件层的已封装导航接口,所述已封装导航接口有多个;
48.本步骤中,用户操作页面所产生的数据请求中可以包含多个接口参数,但是,每个接口参数指示唯一的已封装导航接口。实际工作时,已封装导航接口为根据原生功能所定义地、预先封装的统一接口,例如,当需要调用某个同样的原生功能(如“拨打电话”)时,此时,无论该应用程序app位于哪个平台(如android平台或ios平台)上,也无论该该应用程序app是哪种类型(如口袋app或银保app),该应用程序app能且只能通过某个特定的已封装导航接口才能完成原生功能的调用,其中,上述特定的已封装导航接口与用户操作页面所产生的数据请求中所包含的某个接口参数相对应。
49.下面以获取用户账户信息的接口(getaccountinfo接口)为例,对本技术如何调用已封装导航接口进行说明:无论是基于react native技术栈的跟拍页面,还是基于web前端技术栈的云面谈模块,当需要调用用户账户信息时,本技术能且只能通过“获取用户账户信息接口”(getaccountinfo接口,也即已封装导航接口)来调用上述用户账户信息。实际工作时,本技术中获取用户账户信息的接口(getaccountinfo接口)的可以为用户id。
50.s4、根据所述已封装导航接口获取预设在驱动层的业务驱动通道,所述业务驱动通道为由所述已封装导航接口指向预设的原生底层的通信渠道,所述业务驱动通道包括基于web前端技术栈的第一通道,以及基于react native技术栈的第二通道;
51.本实施例中,实现数据请求的原生功能会对应预设的已封装导航接口,产生上述数据请求的用户操作页面则会对应着预设的业务驱动通道,通过所述业务驱动通道构建由所述已封装导航接口至所述原生名称(也即原生功能注册名称的简称)之间的通讯渠道,其中,该业务驱动通道可以为基于web前端技术栈的第一通道(也可称为web通道),也可以为基于react native技术栈的第二通道(也可称为rn通道)。
52.当产生上述数据请求的用户操作页面来自于业务层的第一业务时,则采用第一通道(也即web通道);同理,当产生上述数据请求的用户操作页面来自于业务层的第二业务时,则采用第二通道(也即rn通道)。
53.本步骤中,获取预设在驱动层的业务驱动通道的步骤包括:
54.s41、根据所述已封装导航接口获取预设在驱动层的统一驱动入口,所述统一驱动入口为每个所述已封装导航接口的方法调用入口;
55.本步骤中,上述统一驱动入口(nativecall.js)是提供给各个已封装导航接口(nativecall,例如modulename、methodname和callback等)的统一调用的方法入口,统一驱动入口(nativecall)的实现里面根据运行的环境,会找到自己技术栈的通道入口,然后完成调用通道。
56.s42、通过所述统一驱动入口对所述数据请求进行解析,得到第一解析结果;
57.s43、根据所述第一解析结果获取能响应所述数据请求的桥协议,根据所述桥协议获取业务驱动通道,所述桥协议包括基于web前端技术栈的第一协议,和基于react native
技术栈的第二协议。
58.本实施例中,业务驱动通道主要是指原生技术栈(如web前端技术栈或react native技术栈)和原生功能(如拨打电话或录音)之间的通讯方式,如第一通道(web通道)可以是cordova,也可以是jsbridge,也可以是更底层的addjavascricptinterface之类的。
59.本技术不限制业务驱动通道的具体通讯类型,人们可以根据自己的需要进行选择,只需要最终按照通讯架构的标准你能接入统一驱动入口和统一驱动出口实现正常通讯就行,本技术的发明人在实际应用时,也经历过了从cordova更换成jsbridge的过程。
60.可选地,根据所述桥协议获取业务驱动通道的步骤包括:
61.s44、判断所述桥协议是否与所述第一通道相对应,若是,则将所述第一通道作为响应所述数据请求的业务驱动通道;若否,则将所述第二通道作为响应所述数据请求的业务驱动通道。
62.本技术的统一驱动出口(nativecallmanager)的主要作用是用于分发来自于通道的请求,解释通道来的数据,找到对应的原生模块和原生模块下的原生接口,并在最终调用完原生功能后,还是要将执行的结果返回通道。因为本技术通过统一驱动出口实现管理分发,因此,上述原生名称也是在统一驱动出口里面。
63.优选地,获取预设在所述预设驱动层的原生名称的步骤还包括:获取预设在驱动层的统一驱动出口;根据所述调用数据信息确定能实现所述数据请求的原生功能;根据所述原生功能获取预设在所述预设驱动层的原生名称。
64.优选地,上述统一驱动入口(nativecall)还负责输入数据的json编码、组装等;统一驱动出口(nativecallmanager)负责请求参数的json解码、拆分等,以及模块的注册和分发。
65.更进一步的,本技术还可以完成对所述应用程序的请求进行解析,得到请求解析结果,根据上述请求解析结果调用相应的原生功能。此部分内容可以在步骤s2中实现(通过在数据请求中预先设置相应的接口参数和调用数据信息),也可以在步骤s4中实现(通过统一驱动入口),人们可以根据自己的需要进行选择。
66.s5、根据所述调用数据信息获取预设在所述驱动层的原生名称,所述原生名称为能实现所述数据请求的原生功能所对应的注册名称;
67.本步骤中,不同类型的应用程序(如口袋app和银保app)在调用相同的原生功能时,其调用数据信息是一致的,这样,不同类型的应用程序所产生的数据请求就可以对应特定的已封装导航接口、原生名称和原生功能。例如,android系统平台上的“拨打电话”功能对应的调用数据信息为1,则ios系统平台上的“拨打电话”功能对应的调用数据信息也为1,口袋app和银保app中调用上述“拨打电话”的原生功能的调用数据信息也为1,原生名称对应的调用数据信息还是为1。
68.本实施例中,无论应用程序(如口袋app和银保app)位于哪个平台(如android平台或ios平台)上,也无论该该应用程序app是哪种类型(如口袋app或银保app),该应用程序(如口袋app和银保app)能且只能通过某个特定的原生名称才能完成原生功能的调用,其中,上述特定的原生名称与某个特定的已封装导航接口相对应。
69.s6、根据所述原生名称调用预设在原生底层的所述原生功能。
70.可选地,调用预设在原生底层的所述原生功能的步骤包括:判断所述原生底层内
是否有与所述原生名称对应的原生功能;若是,则调用所述原生功能;若否,则结束上述步骤s1~s6。优选地,本实例中,如果原生底层中没有相应的原生功能,本发明还可以通过原生底层上预设的原生接口接入相应的原生功能(也即位于第三方平台上的、非跨平台通讯框架的原生底层上的原生功能)。
71.优选地,调用预设在原生底层的所述原生功能之后,还包:获取所述原生功能的执行结果,根据所述桥协议将所述执行结果依次返回至所述业务驱动通道、所述已封装导航接口和所述用户操作页面。
72.本实施例中,调用数据信息会通过相应的技术栈通道(第一通道或第二通道)最终在统一驱动出口处找到相应的原生名称,并由统一驱动出口(nativecallmanager)根据上述原生名称分发到原生底层中,以调用相应的原生功能(模块和方法),调用上述原生功能的执行结果会依次返回到驱动层、组件层、业务层和应用程序中。
73.本实施例中,原生功能设置在跨平台通讯框架的原生底层上,本技术的原生底层提供了一套默认的实现,如interview模块中的网络请求、账户信息等方法,同时,本发明也可以针对不同业务场景,由业务方实现不同的模块和方法,并注入到驱动层,这样,本发明就可以不再需要针对不同技术栈分别实现一套模块和方法,节省了软件开发成本和维护成本。
74.进一步的,根据所述原生名称调用预设在原生底层的所述原生功能之后,由于原生功能可以进一步细分为多个根据不同的业务场景所设置的原生场景功能,针对不同的业务场景获取相应的原生场景功能的步骤包括:根据所述原生名称获取预设在原生底层且与原生功能对应的原生调用接口,所述原生调用接口有多个,每个原生调用接口包括多个根据不同业务场景设置且与原生场景功能对应的原生场景接口;获取用户身份信息,根据所述用户身份信息和原生名称获取原生场景接口;根据所述原生场景接口获取对应的原生场景功能。
75.上述默认的实现主要是指通用的模块和功能的默认实现,原生名称可以为一个统一的、与某个原生功能对应的注册名称(也即原生名称,对应于原生调用接口),还可以进一步地为与某个业务场景所对应的注册名称(属于同一个原生名称下的某个业务场景名称,对应于原生场景接口和原生场景功能)。
76.例如,无论什么业务都需要知道这个用户是谁,那么就一定需要一个用户标识,也就是用户id,本技术为了抹平调用方的差异,设置了公共模块(也即原生调用接口)以用于获取用户信息结构(getaccountinfo接口),其中,数据请求中就有默认能获取用户id。
77.因为本技术的跨平台通讯框架(也即软件开发工具包sdk)是跑在不同的应用程序(app)里面的,用户信息在不同的应用程序(app)里面是不一样的,譬如应用程序(app)是开发给卖保险代理人的,用户信息里面就包含了营业部信息和子公司信息等,如果应用程序(app)是给客户使用的,用户信息里面可能就没有这些信息(营业部信息和子公司信息),只有客户自身的身份信息。
78.因此,公共模块(也即原生调用接口)的默认实现就满足不了所有业务方应用程序(app)的需求(也即在获取用户信息时,仅仅通过公共模块无法进一步区分保险代理人的获取用户信息需求和客户的获取用户信息需求),这时候,业务方可以根据不同的业务场景(对应于原生场景接口)来进一步优化公共模块。
79.上述原生场景接口和原生调用接口的设置方式可以根据实际工作时数据请求所需要调用的原生功能来决定,若所需要调用的原生功能不需要区分具体的业务场景,则统一用原生调用接口,如所需要调用的原生功能需要区分具体的业务场景,则根据不同业务场景选用合适的原生场景接口。
80.本实施例中,本技术还可以通过在调用数据信息(或接口参数)中设置共有参数和区分参数来区分原生调用接口和原生场景接口,例如,当需要获取用户身份信息时,卖保险代理人所获取到的调用数据信息为21,客户所获取到的调用数据信息为22。这样,本技术也即可根据调用数据信息让卖保险代理人和客户均可以获取到相同的原生名称(也即原生调用接口),也可以进一步的将原生名称分为与代理人对应的原生名称(原生场景接口)和与客户对应的原生名称(原生场景接口)。
81.其中,上述调用数据信息中第一位数字“2”(也即十位数,此为共有参数)即表示卖保险代理人和客户均需要获取用户身份信息,而第二位数字“1”(也即个位数,此为区分参数,下同)则表示数据请求的发起方为卖保险代理人,第二位数字“2”则表示数据请求的发起方为客户。
82.同时,本发明中不同的业务场景可能有不一样的需求,那么该业务场景就只需要封装在对应业务场景的模块里面即可。例如,在新的架构图里面像ai面谈模块,跟拍模块都是业务场景各自特有的原生功能。例如,像跟拍模块,有打开跟拍录制页面,打开视频播放页面,这些都是跟拍特有的原生功能,如果一个新的app要接入本技术的跟拍功能,只需要接入跟拍模块。其它模块是不需要接入的。
83.优选地,本发明还包括定义数据通讯标准,以保证数据流转的通用性,例如,数据请求所形成的请求数据可以包括模块名称、方法名称、有效载荷,有效载荷包括参数、回调。针对上述数据请求所产生的请求响应包可以包括状态码、状态描述、数据。
84.本实施例所述的基于混合技术栈的跨平台原生功能调用方法是基于跨平台通讯框架实现的,如图2所示,上述跨平台通讯框架为本技术的发明人自行设计的通讯框架,包括:业务层11、组件层12、驱动层13和原生底层14。
85.业务层11,主要用户根据通讯业务的需要调用组件层的服务,包括:基于web前端技术栈的第一业务和基于react native技术栈的第二业务,上述第一业务(也可称为web业务)和第二业务(也可称为rn业务)主要为在移动终端上显示的页面。
86.第一业务(web业务)是指基于web前端技术栈所开发的页面,目前的web业务的主要技术优势在于部署快,可以快速跟新,其中,web业务可包括每月或节日的活动页面和部分功能页面(例如ai云面谈页面、理赔地图页面和产品卡片页面等)。
87.第二业务(也可称为rn业务)是指基于react native技术栈所开发的页面,其也具有部署快的优点,但是上述原生业务在数据交互上比web业务要细腻,其中,第二业务主要包括ai跟拍首页、个人排名模块的所有页面和联系模块首页等。
88.实际工作时,应用层主要用于显示所述混合型前端技术栈的页面,以便于人们对原生功能组件上的数据信息进行扩展。
89.组件层12,主要用于根据原生功能定义地、预先封装的统一接口,包括:公共模块接口、ai面谈模块接口和跟拍模块接口等,其中,
90.公共模块接口(commonmofine)包括账户信息接口、微信分享接口和环境信息接
口,账户信息接口为专门用于获取用户账户信息的接口(getaccountinfo接口),微信分享接口为专门用于分享微信链接的接口,环境信息接口为专门用于获取应用程序app的环境信息的接口;
91.ai面谈模块接口包括跳转面谈会议室接口和录音功能接口等,其中,调转面谈会议室接口专门用于让用户跳转至合适的面谈会议室接口,录音功能接口专门用于打开录音功能;
92.跟拍模块接口包括打开跟拍录制页面接口和打开视频播放页面接口,其中,打开跟拍录制页面接口专门用于打开跟拍录制页面,打开视频播放页面接口专门用于打开视频播放页面。
93.优选地,组件层12还用于对应用的接口进行封装,获得封装的接口,所述封装的接口通过统外呼模块与第三方系统进行通信;该接口不能修改,只能扩展;本技术可根据各个app的实际需要,设置统一的接口,以便于让各个app能根据自身需要调用原生功能组件上的信息。
94.驱动层13,主要用户负责js端桥(例如ios平台的javascriptcore)和原生端桥(也即react native bridge)的搭建,以构建统一的通信渠道,包括:基于web前端技术栈的第一通道,以及基于react native技术栈的第二通道。
95.其中,第一通道包括web请求方、web响应方和web内核,第二通道包括rn请求方、rn响应方和rn内核,其中,webbridge基于web内核,如ios端的javascriptcore,webbridge用于构建web通信的请求和响应。rnbridge基于reactnative内核(如nativemodules,也即rn内核),rnbridge用于构建rn通信的请求和响应,上述webbridge和rnbridge统一管理事件的请求和回调。
96.本实施例中,驱动层中的业务驱动通道上还设置有统一驱动入口(nativecall)和统一驱动出口(nativecallmanager),上述第一通道的输入端和第二通道均与统一驱动入口(nativecall)连接,第一通道的输出端和第二通道的输出端均与统一驱动出口(nativecallmanager)连接。
97.原生底层14,用于负责原生模块、方法的维护和实现(也即用户实现用户操作页面所产生的数据请求),本技术的原生功能有多种,包括:公共模块的底层实现(包括获取账户信息、分享微信和获取环境信息等)、ai面谈模块底层实现(包括跳转面谈会议室、打开录音功能等)、跟拍模块底层实现(打开跟拍录制页面、打开视频播放页面)。
98.本技术的上述跨平台通讯框架的后续维护和新增功能,不需要针对web前端技术栈和reactnative技术栈分别实现一套服务,只需要在原生底层和组件层进行维护,提供一套服务即可,提高开发效率,减少开发成本。
99.本技术提出了一种在多混合技术栈和多访问方式的情况下,构建统一和数据安全的原生通信方式。把技术栈和访问原生的方式隐藏在驱动层之中,驱动层根据不同模块名和方法名分发给不同的模块和方法,做到了一套接口,多套实现。
100.最终组件层按照协议格式访问驱动层上的统一端口(统一驱动入口和统一驱动出口),实现了驱动层和原生功能一致的实现。同时为了保证数据安全,统一把数据以json字符串的方式进行,避免不同技术栈之间的数据类型转换带来的问题。另外组件层在技术栈不相同的情况下实现也是一致的,这样在迭代中可以更新访问原生功能的实现,对应用层
的不带来影响。
101.图3为本发明第二实施例的一种基于混合技术栈的跨平台原生功能调用装置的结构示意图。如图3所示,该基于混合技术栈的跨平台原生功能调用装置包括:
102.页面获取模块21,用于根据用户的操作指令获取预设在业务层的用户操作页面,所述用户操作页面为基于web前端技术栈的多个第一页面中的其中一个页面,或基于react native技术栈的多个第二页面中的其中一个页面;
103.数据请求获取模块22,用户获取所述用户操作页面所产生的数据请求,其中,所述数据请求包括接口参数和调用数据信息;
104.封装接口获取模块23,用于根据所述接口参数获取预设在组件层的已封装导航接口,所述已封装导航接口有多个;
105.驱动通道获取模块24,用于根据所述已封装导航接口获取预设在驱动层的业务驱动通道,所述业务驱动通道为由所述已封装导航接口指向预设的原生底层的通信渠道,所述业务驱动通道包括基于web前端技术栈的第一通道,以及基于react native技术栈的第二通道;
106.原生名称获取模块25,用于根据所述调用数据信息获取预设在所述驱动层的原生名称,所述原生名称为能实现所述数据请求的原生功能所对应的注册名称;
107.原生功能获取模块26,用于根据所述原生名称调用预设在原生底层的所述原生功能。
108.关于基于混合技术栈的跨平台原生功能调用装置的具体限定可以参见上文中对于基于混合技术栈的跨平台原生功能调用方法的限定,在此不再赘述。上述基于混合技术栈的跨平台原生功能调用装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
109.图4是本发明第三实施例的电子设备的结构示意图。如图4所示,该电子设备30包括处理器31及和处理器31耦接的存储器32。
110.存储器32存储有用于实现上述任一实施例的基于混合技术栈的跨平台原生功能调用方法的程序指令。
111.处理器31用于执行存储器32存储的程序指令以进行排污监测数据处理。
112.其中,处理器31还可以称为cpu(central processing unit,中央处理单元)。处理器31可能是一种集成电路芯片,具有信号的处理能力。处理器31还可以是通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
113.参阅图5,图5为本发明第四实施例的存储介质的结构示意图。本发明第四实施例的存储介质40存储有能够实现上述所有方法的程序指令41,其中,该程序指令41可以以软件产品的形式存储在上述存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以
存储程序代码的介质,或者是计算机、服务器、手机、平板等终端设备。
114.在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
115.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。以上仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围。
116.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性和/或易失性的计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
117.所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,b本发明仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献