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

一种数据交互方法、装置、存储介质及电子设备与流程

2022-02-25 18:14:16 来源:中国专利 TAG:


1.本发明实施例涉及数据交互技术领域,尤其涉及一种数据交互方法、装置、存储介质及电子设备。


背景技术:

2.flutter是目前很热的跨平台技术,提供了媲美原生性能的app体验,更好地解决了多端一致性问题。
3.flutter是基于平台设计的系统ui框架,当涉及到与原生(native)能力的使用需要借助channel的实现,这就导致需要在flutter侧与原生侧分别写入定义代码,以使用或者复用原生的能力。随着业务的需要,需定义更多的channel,且channel的名字和method存在硬编码,只能调用method对应的native代码块。


技术实现要素:

4.本发明提供一种数据交互方法、装置、存储介质及电子设备,以提高嵌入应用与原生系统之间数据交互的灵活性。
5.第一方面,本发明实施例提供了一种数据交互方法,包括:
6.嵌入应用基于检测到的业务操作生成至少一个调用信息,将所述至少一个调用信息形成一调用数据结构;
7.所述嵌入应用将所述调用数据结构通过所述嵌入应用与原生系统之间的信号通道传输至所述原生系统,以使所述原生系统基于预先设置的数据交互协议对所述调用数据结构进行处理,以得到所述调用数据结构中各调用信息对应的调用结果;
8.所述嵌入应用接收所述原生系统返回的调用结果。
9.第二方面,本发明实施例还提供了一种数据交互方法,包括:
10.原生系统接收嵌入应用基于预设信号通道发送的调用数据结构,对所述调用数据结构进行解析,得到所述嵌入应用的至少一个调用信息;
11.所述原生系统依次调用所述至少一个调用信息分别对应的目标方法,以得到各调用信息对应的调用结果;
12.所述原生系统将所述调用结果反馈至所述嵌入应用。
13.第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本发明任一实施例提供的数据交互方法。
14.第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任一实施例提供的数据交互方法。
15.本发明实施例提供的技术方案,通过嵌入应用将一个或多个调用信息形成一调用数据结构,通过嵌入应用与原生系统之间的一个信号通道将调用数据结构传输至原始系统中,实现了多个调用信息的同步传输,提高了调用信息的传输效率,同时一个调用数据结构
仅建立一个信号通道,且该信号通道与原生系统的method之间不存在硬编码,可对任意调用数据结构和调用结果等进行传输,大大减少嵌入应用与原生系统之间的信号通道数量。
附图说明
16.图1为本发明实施例一提供的一种数据交互方法的流程示意图;
17.图2是本发明实施例提供的一种调用数据栈的示例图;
18.图3是本发明实施例提供的一种数据交互方法的流程示意图;
19.图4是本发明实施例提供的嵌入应用与原始系统之间的数据交互的示意图;
20.图5是本发明实施例提供的代理方法及调用原理的示意图;
21.图6是本发明实施例三提供的一种数据交互方法的流程示意图;
22.图7是本发明实施例四提供的一种数据交互装置的结构示意图;
23.图8是本发明实施例五提供的一种数据交互装置的结构示意图;
24.图9为本发明实施例六提供的一种电子设备的结构示意图。
具体实施方式
25.下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
26.实施例一
27.图1为本发明实施例一提供的一种数据交互方法的流程示意图,本实施例可适用于嵌入应用与原生系统之间的数据交互的情况,该方法可以由本发明实施例提供的一种数据交互装置来执行,该装置可集成与诸如手机、计算机、智能手表等的电子设备中。该方法具体包括如下步骤:
28.s110、嵌入应用基于检测到的业务操作生成至少一个调用信息,将所述至少一个调用信息形成一调用数据结构。
29.s120、嵌入应用将所述调用数据结构通过所述嵌入应用与原生系统之间的信号通道传输至所述原生系统,以使所述原生系统基于预先设置的数据交互协议对所述调用数据结构进行处理,以得到所述调用数据结构中各调用信息对应的调用结果。
30.s130、嵌入应用接收所述原生系统返回的调用结果。
31.所谓嵌入应用是基于开发框架开发的应用,嵌入应用可以是嵌入在原生系统中,其中,原生系统包括ios系统和android系统,开发框架可以包括但不限于flutter框架。在一些实施例中,嵌入应用可以是基于flutter框架开发,即flutter应用。根据业务需求,嵌入应用需使用原生系统的能力,例如推送、定位、存储和网络等,嵌入应用与原生系统之间进行数据通信,例如,数据通信可以包括但不限于获取电量、判断wifi使用、调起webview加载网页。目前嵌入应用与原生系统之间的channel与method名称之间存在硬编码,导致该channel仅能够调用原生系统中method名称对应的原生代码块,因此,随着业务需求的不断增加,需要进行交互的数据也不断增加,需建立更多了channel。同时原生代码块需要手动取出对应参数,处理完逻辑后返回到嵌入应用。
32.基于嵌入应用与原生系统在数据交互时存在的上述问题,本实施例中通过预先设
置嵌入应用与原生系统之间的数据交互协议,实现嵌入应用与原生系统之间灵活性数据交互,该数据交互协议中限定了嵌入应用与原生系统对进行交互数据的处理方式。
33.嵌入应用实时监测业务需求,其中业务需求可以包括但不限于用户的业务操作和嵌入应用运行过程中数据需求。其中,业务操作可对应一个或多个调用信息,该调用信息为需要从原生系统中进行调用的信息,例如可以是待获取的信息名称、信息标识或者调用方法信息数据等,其中调用方法信息数据可以是包括调用方法的属性参数,在一个实施例中,调用信息可以包括类名、方法名、调用方法的配置参数和调用id。嵌入应用将获取的至少一个调用信息处理为一个调用数据结构,通过调用数据结构的方式将至少一个调用信息传输至原生系统。其中,调用数据结构可以是能够存储多个调用信息的数据结构,例如可以是但不限于栈结构、堆结构、队列结构或者链表结构等,该调用数据结构为预先在数据交互协议中定义的数据结构。
34.以栈结构为例,将获取的至少一个调用信息分别写入到栈结构中,形成调用数据栈。其中,写入同一栈结构的调用信息可以是同一业务操作产生的至少一个调用信息,还可以是预设时间间隔中内获取的至少一个调用信息。各调用数据栈中包括的调用信息数量可以不同,可根据当前业务需求量正相关,若当前业务操作密集,则产生的调用信息数量大;还可以是根据当前业务操作类型相关,不同业务操作类型可对应不同数量不同类型的调用信息。
35.在一些实施例中,将所述至少一个调用信息形成一调用数据结构,包括:根据所述至少一个调用信息的业务需求顺序,将所述至少一个调用信息形成一调用数据结构。其中,业务需求顺序可以是调用信息的触发时间形成的顺序,或者还可以是调用信息之间的业务逻辑顺序。通过根据业务需求顺序依次写入调用数据结构中,以使原生系统在获取到调用数据结构时,可得到调用数据结构中各调用信息的业务需求顺序,原生系统可根据业务需求顺序进行信息处理。
36.嵌入应用与原生系统之间预先建立一信号通道,该信号通道可对任意调用数据结构以及调用结果进行传输。需要说明的是,一个嵌入应用与原生系统之间可以是设置一个信号通道,无需建立其他信号通道,且该信号通道不存在与任何method之间的硬编码。通过该信号通道将调用数据结构以json形式发送至原生系统,以使原生系统基于预先设置的数据交互协议对调用数据结构进行处理,其中,原生系统对调用数据结构进行处理可以是,基于数据交互协议中的调用数据结构解析方法,解析调用数据结构,得到调用数据结构中的至少一个调用信息,基于数据交互协议中的调用信息处理方法,调用上述调用信息对应的目标方法,得到调用信息对应的调用结果。
37.示例性的,参见图2,图2是本发明实施例提供的一种调用数据栈的示例图。图2中的调用方法信息数据中的数据1、数据2以及数据n,即本实施例中的调用数据结构中的至少一个调用信息。该调用数据中可以是包括调用的类名、调用的方法名、调用方法需要的参数以及本次调用的id。原生系统通过解析调用数据结构得到上述调用信息,基于上述调用信息中的上述属性信息调用对应的目标方法,得到调用结果。原生系统将调用结果通过信息通道发送至嵌入应用,实现嵌入应用与原始系统之间的数据交互。
38.本实施例提供的技术方案,通过嵌入应用将一个或多个调用信息形成一调用数据结构,通过嵌入应用与原生系统之间的一个信号通道将调用数据结构传输至原始系统中,
实现了多个调用信息的同步传输,提高了调用信息的传输效率,同时一个调用数据结构仅建立一个信号通道,且该信号通道与原生系统的method之间不存在硬编码,可对任意调用数据结构和调用结果等进行传输,大大减少嵌入应用与原生系统之间的信号通道数量,降低了信号通道的维护成本。同时在嵌入应用中新增业务或新增功能时,导致存在新增调用信息,无需创建新的信号通道以及无需对原生系统进行代码写入,通过将该新增的调用信息通过调用数据结构方式传输至原生系统,原生系统可调用该新增的调用信息对应的目标方法,以返回调用结果,提高了嵌入应用与原生系统之间的数据交互的灵活性。
39.在上述实施例从基础上,在所述嵌入应用将所述调用数据结构通过所述嵌入应用与原生系统之间的信号通道传输至所述原生系统之前,所述方法还包括:判定所述嵌入应用与原生系统之间是否存在信号通道;若否,则建立所述嵌入应用与原生系统之间的信号通道,并将所述数据交互协议发送至所述原生系统。其中,信号通道可以是嵌入应用与原生系统进行首次通信之前建立的,在该信号通道建立后,无需再次创建下一信号通道,即在嵌入应用发送调用数据结构之前,判断是否存在嵌入应用与原生系统之间的信号通道,若是,则基于已建立的信号通道传输调用数据结构,如否,则基于预先设置的信号通道建立方法建立嵌入应用与原生系统之间的信号通道。例如可以是向原生系统发送信号通道建立请求,该信号通道建立请求可以是包括该嵌入应用的验证信息(例如可以是嵌入应用的标识信息),当原生系统验证成功后,建立嵌入应用与原生系统之间的信号通道。
40.实施例二
41.图3是本发明实施例提供的一种数据交互方法的流程示意图,该方法具体包括如下步骤:
42.s210、原生系统接收嵌入应用基于预设信号通道发送的调用数据结构,对所述调用数据结构进行解析,得到所述嵌入应用的至少一个调用信息。
43.s220、所述原生系统依次调用所述至少一个调用信息分别对应的目标方法,以得到各调用信息对应的调用结果。
44.s230、所述原生系统将所述调用结果反馈至所述嵌入应用。
45.其中,电子设备上配置有原生系统和至少一个嵌入应用,每一个嵌入应用与原生应用之间分别设置有一数据交互协议,不同嵌入应用对应的数据交互协议中定义的调用数据结构可以相关或不同,相应的,数据交互协议还定义了调用数据结构对应的解析方法。
46.原生系统根据发送调用数据结构上携带的嵌入应用的标识信息,或者传输该调用数据结构的信号通道的标识信息,调用对应的数据交互协议,基于该数据交互协议对调用数据结构进行处理。
47.原生系统对调用数据结构(例如可以是调用数据栈)进行解析,得到调用信息列表list,基于调用信息列表中各调用信息,调用目标方法,得到各调用信息对应的调用结果。
48.在一些实施例中,原生系统依次调用所述至少一个调用信息分别对应的目标方法,包括:根据解析得到的至少一个调用信息的顺序,链式调用各调用信息分别对应的目标方法。示例性的,参见图4,图4是本发明实施例提供的嵌入应用与原始系统之间的数据交互的示意图,其中,图4中嵌入应用以flutter应用为例。由于栈结构、队列结构等中调用信息的写入位置可表征调用信息的序列信息,在对调用数据结构进行解析后,基于调用数据结构的位置,确定各调用信息的顺序,基于图4中的链式调用方式依次进行目标方法的调用,
其中,图4中仅包括链式调用的两个处理方法(即目标方法),在其他实施例中,可根据调用信息的数量适应性调用对应数量的目标方法。具体的,原生系统可以是根据调用信息中的类型、方法名和调用方法所需参数确定目标方法,并进行调用。
49.在一些实施例中,原生系统可以是将各调用信息对应的调用结果基于获取顺序依次返回至嵌入应用,还可以将同一调用数据结构对应的多个调用结果同步返回至嵌入应用。
50.在上述实施例基础上,原生系统依次调用所述至少一个调用信息对应的目标方法,包括:调用预设代理方法,基于所述预设代理方法依次调用所述至少一个调用信息对应的目标方法。其中,数据交互协议中预先定义了预设代理方法或预设代理方法的生成方法。示例性的,参见图5,图5是本发明实施例提供的代理方法及调用原理的示意图。在一些实施例中,用于调用不同目标方法的代理方法可以不同,基于目标方法生成调用各目标方法的代理方法,将各代理方法存储在预设存储区域,在调用目标方法之间,判断存储区域中是否存在该目标方法对应的代理方法,若是,基于该代理方法调用目标方法,若否,则基于预设代理方法的生成方法,生成目标方法对应的代理方法,并基于生成的代理方法调用目标方法。
51.通过设置代理方法,通过代理方法调用目标方法,避免了嵌入应用与原始系统之间的数据交互对原生系统中源代码的侵入性。相对于直接调用目标方法的方式,可在调用目标方法之前对调用信息进行预处理,或者在调用目标方法之后对调用结果进行后处理,本实施例中,不限定上述预处理和后处理的具体方式,可以是数据交互协议中的定义的处理方式。
52.在上述实施例的基础上,在得到所述嵌入应用的至少一个调用信息之后,所述方法还包括:对解析得到的至少一个调用信息设置注解信息,其中,所述注解信息用于标记所述调用信息的优先级。数据交互协议中定义有注解方法,示例性的参见图5,在编写代码期间,设置注解方法,在编译器件,通过注解处理器生成代理文件,对调用信息添加注解信息,该注解信息可以是写在注解方法中,或者写在数据交互协议中,该注解信息可以是嵌入应用的相关的标识信息或者优先级信息,便于在对调用信息进行处理时,即在运行期间根据标注信息确定调用信息的处理优先级,可选的,配置有注解信息的调用信息的优先级高于未配置有调用信息的优先级;可选的,不同的注解信息对应的不同的优先级。
53.在上述实施例的基础上,原始系统可接收不同嵌入应用发送的调用数据结构,当接收到包括相同调用信息的调用数据结构,可对调用数据结构进行并行处理,即仅对调用数据结构进行依次处理,并将该调用数据结构对应的调用结果分别返回至对应的多个嵌入应用,减少相同目标方法的多次重复调用。可选的,在对调用数据结构进行并行处理之前,可以是判断不同嵌入应用发送相同调用数据结构的时间戳,若该时间戳的差值满足小于预设时间阈值时,则执行对调用数据结构的并行处理。可选的,在对调用数据结构进行并行处理之前,判断调用信息是否为可并行处理类型,若是,则执行对调用数据结构的并行处理,若否,则对不同嵌入应用发送的调用数据结构分别进行处理。其中,调用信息的并行处理类型可以是预先设置的,不受嵌入应用所影响的调用参数,例如电量等。
54.可选的,原生系统可以是ios系统,ios系统可以是基于runtime接口调用任意类的方法实现对目标方法的调用,具体的,可以是使用类对象定义方法nsclassfromstring动态
获得类对象,该类对象为调用信息中类名对应的类对象,使用selector调用方法nsselectorfromstring获取要调用方法的selector,使用nsinvocation动态为创建的类对象调用目标方法,该目标方法为调用信息中方法名对应的方法。
55.可选的,原生系统可以是android系统,android系统通过反射机制获取调用结果。通过类对象创建方法class.forname创建调用信息对应class对象,然后调用newinstance创建对象,然后根据调用信息调用方法即可。
56.本实施例的技术方案,原生系统通过预先设置的数据交互协议,对嵌入应用发送的调用数据结构进行解析,基于解析得到的至少一个调用信息调用目标方法以得到调用结果,提高了嵌入应用与原生系统之间数据交互的灵活性。
57.实施例三
58.图6是本发明实施例三提供的一种数据交互方法的流程示意图,该方法具体包括:
59.s310、嵌入应用基于检测到的业务操作生成至少一个调用信息,将所述至少一个调用信息形成一调用数据结构,将所述调用数据结构通过所述嵌入应用与原生系统之间的信号通道传输至所述原生系统。
60.s320、所述原生系统基于预先设置的数据交互协议,对所述调用数据结构进行解析,得到所述嵌入应用的至少一个调用信息,依次调用所述至少一个调用信息对应的目标方法,以得到各调用信息对应的调用结果,将所述调用结果反馈至所述嵌入应用。
61.s330、所述嵌入应用接收所述原生系统返回的调用结果。
62.通过嵌入应用将一个或多个调用信息形成一调用数据结构,通过嵌入应用与原生系统之间的一个信号通道将调用数据结构传输至原始系统中,实现了多个调用信息的同步传输,提高了调用信息的传输效率,同时一个调用数据结构仅建立一个信号通道,且该信号通道与原生系统的method之间不存在硬编码,可对任意调用数据结构和调用结果等进行传输,大大减少嵌入应用与原生系统之间的信号通道数量,降低了信号通道的维护成本。
63.实施例四
64.图7是本发明实施例四提供的一种数据交互装置的结构示意图,该装置集成于嵌入应用。该装置包括:
65.调用信息生成模块410,用于基于检测到的业务操作生成至少一个调用信息;
66.调用数据结构形成模块420,用于将所述至少一个调用信息形成一调用数据结构;
67.调用数据结构发送模块430,用于将所述调用数据结构通过所述嵌入应用与原生系统之间的信号通道传输至所述原生系统,以使所述原生系统基于预先设置的数据交互协议对所述调用数据结构进行处理,以得到所述调用数据结构中各调用信息对应的调用结果;
68.调用结果接收模块440,用于接收所述原生系统返回的调用结果。
69.可选的,调用数据结构形成模块420用于:
70.根据所述至少一个调用信息的业务需求顺序,将所述至少一个调用信息形成一调用数据结构。
71.可选的,该装置还包括:
72.信号通道判断模块,用于在所述嵌入应用将所述调用数据结构通过所述嵌入应用与原生系统之间的信号通道传输至所述原生系统之前,判定所述嵌入应用与原生系统之间
是否存在信号通道;
73.信号通道建立模块,用于若嵌入应用与原生系统之间不存在信号通道,则建立所述嵌入应用与原生系统之间的信号通道,并将所述数据交互协议发送至所述原生系统。
74.上述产品可执行本发明任意实施例所提供的方法,具备执行方法相应的功能模块和有益效果。
75.实施例五
76.图8是本发明实施例五提供的一种数据交互装置的结构示意图,该装置集成于嵌入应用。该装置包括:
77.参数解析模块510,用于接收嵌入应用发送的调用数据结构,对所述调用数据结构进行解析,得到所述嵌入应用的至少一个调用信息;
78.方法调用模块520,用于依次调用所述至少一个调用信息对应的目标方法,以得到各调用信息对应的调用结果;
79.调用结果反馈模块530,用于将所述调用结果反馈至所述嵌入应用。
80.可选的,方法调用模块520用于:
81.根据解析得到的至少一个调用信息的顺序,链式调用各调用信息分别对应的目标方法。
82.可选的,方法调用模块520用于:
83.调用预设代理方法,基于所述预设代理方法依次调用所述至少一个调用信息对应的目标方法。
84.可选的,该装置还包括:
85.在得到所述嵌入应用的至少一个调用信息之后,对解析得到的至少一个调用信息设置注解信息,其中,所述注解信息用于标记所述调用信息的优先级。
86.可选的,所述原生系统包括ios系统和android系统。
87.上述产品可执行本发明任意实施例所提供的方法,具备执行方法相应的功能模块和有益效果。
88.实施例六
89.图9为本发明实施例六提供的一种电子设备的结构示意图。图9示出了适于用来实现本发明实施方式的电子设备12的框图。图9显示的电子设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。设备12典型的是承担图像分类功能的电子设备。
90.如图9所示,电子设备12以通用计算设备的形式表现。电子设备12的组件可以包括但不限于:一个或者多个处理器16,存储装置28,连接不同系统组件(包括存储装置28和处理器16)的总线18。
91.总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(industry standard architecture,isa)总线,微通道体系结构(micro channel architecture,mca)总线,增强型isa总线、视频电子标准协会(video electronics standards association,vesa)局域总线以及外围组件互连(peripheral component interconnect,pci)总线。
rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
101.计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的源代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
102.计算机可读介质上包含的源代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、rf等等,或者上述的任意合适的组合。
103.可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机源代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c ,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。源代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
104.注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
再多了解一些

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

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

相关文献