混合型应用的接口调用方法、装置及计算机可读存储介质与流程

文档序号:16325357发布日期:2018-12-19 05:53阅读:214来源:国知局
混合型应用的接口调用方法、装置及计算机可读存储介质与流程

本发明涉及计算机领域,尤其涉及一种混合型应用的接口调用方法、装置及计算机可读存储介质。

背景技术

混合型应用(hybridapp)是一种介于网页应用(webapp)和原生应用(nativeapp)之间的应用,指的是应用的原生(native)代码中部分功能采用动态网页(html5+javascript)来实现,兼具原生应用良好的用户交互体验以及网页应用跨平台开发的优势。

在混合型应用的使用过程中,原生代码和javascript(一种直译式脚本语言)代码互相调用并传递参数,而且能回调数据,但原生与javascript在相互调用过程中存在以下问题:在混合型应用的开发过程中,原生代码和javascript代码通常是分开开发的,当需要为混合型应用增加一种新的功能时,需要在javascript代码中增加对应于该新功能的调用方法,同时对原生代码进行更新使原生代码增加一个与该新功能对应的api(applicationprogramminginterface,应用程序编程接口);javascript代码热更新后的新版本直接被发布到线上,因此可以直接使用更新后的javascript代码,但原生代码更新后的新版本只有在用户更新该混合型应用后才能被使用,而实际使用时,用户通常不会及时更新混合型应用,也就不会及时获取到新版本的原生代码,则当新版本的javascript执行新增加的调用方法来调用原生时,由于旧版本的原生代码中并不包括对应的api,因此javascript中的新的调用方法无法完成调用,混合型应用程序无法完成相应功能的启动,甚至无法继续使用,兼容性和使用体验都较差。



技术实现要素:

本发明的目的在于提供一种混合型应用的接口调用方法、装置及计算机可读存储介质,通过版本控制提高了混合型应用的兼容性,同时保证了javascript异步调用时的安全性。

本发明是通过下述技术方案来解决上述技术问题:

一种混合型应用的接口调用方法,该方法包括:

若通过混合型应用接收到用于通过当前javascript脚本文件调用目标api的触发操作,则确定混合型应用的版本号;

根据版本号与当前javascript脚本文件,确定混合型应用中定义的原生api中是否包括目标api;

若原生api中不包括目标api,则在通过当前javascript脚本文件响应触发操作时,禁止调用目标api;

若原生api中包括目标api,则在通过当前javascript脚本文件响应触发操作时,允许调用目标api。

为了实现上述目的,本发明还提供了一种混合型应用的接口调用装置,该装置包括:

版本确定模块,用于在通过混合型应用接收到用于通过当前javascript脚本文件调用目标api的触发操作时,确定混合型应用的版本号;

检测模块,用于根据版本号与当前javascript脚本文件,确定混合型应用中定义的原生api中是否包括目标api;

操作模块,用于在原生api中不包括目标api时,通过当前javascript脚本文件响应触发操作时,禁止调用目标api;

调用模块,用于在原生api中包括目标api时,通过当前javascript脚本文件响应触发操作时,允许调用目标api。

为了实现上述目的,本发明还提供了一种计算机设备,该计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现混合型应用的接口调用方法的步骤。

为了实现上述目的,本发明还提供了一种计算机可读存储介质,计算机可读存储介质内存储有至少一条指令,至少一条指令由至少一个处理器加载并执行实现混合型应用的接口调用方法。

本发明的积极进步效果在于:

1、本发明实现了对javascript与原生交互的伪协议的版本控制,在javascript进行热更新但应用未升级而导致的当前javascript脚本文件与当前版本的原生不匹配的情况下,在通过当前javascript脚本文件响应调用目标api的触发操作时,禁止调用目标api,直接跳过此次调用,保证混合型应用主体功能的正常使用。

2、javascript在异步调用多个原生方法时,原生按调用顺序依次执行并依次回调,保证了调用过程中的安全性;同时在多次调用符合预设调用顺序时,原生可以对多次调用进行合并处理,全部执行完成后再在最后进行一次回调,提高了javascript与原生之间互相调用的效率。

附图说明

图1示出了本发明混合型应用的接口调用方法一实施例的流程图。

图2示出了本发明混合型应用的接口调用方法又一实施例的流程图。

图3示出了本发明混合型应用的接口调用装置一实施例的程序模块示意图。

图4示出了本发明混合型应用的接口调用装置又一实施例的程序模块示意图。

图5示出了本发明混合型应用的接口调用装置又一实施例的程序模块示意图。

图6示出了本发明混合型应用的接口调用装置又一实施例的程序模块示意图。

图7示出了本发明计算机设备一实施例的硬件结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

请参考图1,示出了混合型应用的接口调用方法的具体步骤,该混合型应用同时包括原生以及javascript脚本文件,原生和javascript脚本文件互相调用以实现整个混合型应用的功能。其中,原生基于硬件平台支持的开发工具和语言来开发,其被安装于基于该类硬件平台的计算机设备上并可以调用计算机设备的硬件功能(如扬声器、加速度传感器和摄像头等),例如,原生可以基于ios平台支持的xcode或objective-c来开发并被安装于基于ios平台的计算机设备上,或者,原生基于安卓平台支持的eclipse或java来开发并被安装于基于安卓平台的计算机设备上。javascript脚本文件基于web技术开发。本申请公开的接口调用方法具体如下:

步骤110,若通过混合型应用接收到用于通过当前javascript脚本文件调用目标api的触发操作,则确定混合型应用的版本号,其中,当前javascript脚本文件为经过热更新后的最新版本的javascript脚本文件,该当前javascript脚本文件可能与当前版本的混合型应用的原生匹配,也可能不匹配。目标api为不影响混合型应用正常使用的api,比如混合型应用为银行类应用,目标api为网络信息读取api,没有该网络信息读取api虽然无法读取网络信息但不会影响银行类应用的正常使用,实际目标api具体的含义可以自定义。javascript可以通过调用原生提供的相应接口就可以获取混合型应用的版本号,比如调用navigator.useragent()。

步骤120,根据版本号与当前javascript脚本文件,确定混合型应用中定义的原生api中是否包括目标api:由于各个版本的混合型应用定义的原生api的列表会维护在服务器端,因此当前javascript脚本文件根据混合型应用的版本号就能获取到服务器端维护的该混合型应用定义的所有的原生api。

步骤130,若原生api中不包括目标api,则说明当前javascript脚本文件与目前原生的版本不匹配,javascript热更新后原生尚未进行更新,因此此次调用不能完成,则在通过当前javascript脚本文件响应触发操作时,禁止调用目标api,通过做法是当前javascript脚本文件直接跳过此次对目标api的调用,同时还可以在混合型应用中显示提示框提示用户更新该混合型应用。

比如,目标api为网络信息读取api,混合型应用维护有1.0版本和1.1版本,1.0版本的混合型应用的原生不提供网络信息读取api,1.1版本的混合型应用的原生提供该网络信息读取api,javascript已经进行了热更新并增加了调用网络信息读取api的调用方法。假设用户安装的混合型应用仍然是1.0版本的,则当前javascript脚本文件在需要调用该网络信息读取api时,会检测到1.0版本的混合型应用的原生不提供相应接口,目前的做法可能是在用户不更新的状态下强制退出混合型应用不允许用户继续使用,但网络信息读取不是混合型应用的主要功能,无法读取网络信息不会影响混合型应用主体功能的正常使用,因此在本申请的做法中,当前javascript脚本文件可以直接跳过对该网络信息读取api的调用,使得用户能够继续使用该混合型应用。

步骤140,若原生api中包括目标api,则说明当前javascript脚本文件与目前原生的版本相匹配,此次调用可以完成,则在通过当前javascript脚本文件响应触发操作时,允许调用目标api。

例如,在上述例子中,假设用户安装的混合型应用已经是1.1版本的,则当前javascript脚本文件在需要调用该网络信息读取api时,会检测到1.1版本的混合型应用的原生提供相应接口,则执行调用读取到当前的网络信息。

实施例二

请参考图2,示出了混合型应用在接口调用过程中允许调用目标api时的具体步骤,也即上述实施例一中步骤140的具体实施方法的步骤,包括:

步骤141,若原生api中包括目标api,则说明当前javascript脚本文件与目前原生的版本相匹配,此次调用可以完成,则通过当前javascript脚本文件执行对目标api的调用,生成本次调用对应的回调标识,该回调标识用于标识本次调用的回调函数,生成方法通常为:通过当前javascript脚本文件获取调用触发参数,调用触发参数是此次调用触发操作的各项参数,调用触发参数包括但不限于接收到调用触发操作的时间戳信息、预定时间内连续接收到调用触发操作的次数以及目标api的接口编号等,由调用触发参数生成字符串,然后利用字符串转换方法将该字符串转换为预定格式即为回调标识,比如可以利用字符串转换方法将生成的该字符串转换为20进制的短字符串。

步骤142,通过当前javascript脚本文件将回调标识作为参数传送给原生,并对目标api进行调用。当前javascript脚本文件采用异步调用的方法进行调用,也即当前javascript脚本文件在执行一次调用后,不需要等待原生完成回调就可以按照步骤141和步骤142的方法继续执行下一次调用。则同一时刻可能会存在一个或多个javascript的调用。

步骤143,若当前javascript脚本文件在预设时长内仅执行一次调用,则原生执行本次调用的业务逻辑,其中预设时长可以自定义。在执行完成本次调用的业务逻辑后,原生调用此次调用的回调标识对应的回调函数完成本次调用的回调,在回调时,原生可以将业务逻辑的执行结果数据作为参数传送给当前javascript脚本文件以向当前javascript脚本文件返回此次调用相应的数据,然后原生清除回调标识,保证回调的唯一性。

步骤144,若当前javascript脚本文件在预设时长内执行n次调用,n≥2且n为正整数,则原生检测n次调用的调用顺序是否符合预设调用顺序,该预设调用顺序可以是一个自定义的顺序规则,比如比较常用的一种预设调用顺序为:在调用数据修改类api之前和之后分别调用了数据读取api,数据修改类api包括数据写入api、数据删除api和数据更新api中的至少一种,比如4次调用依次为:调用数据读取api(getdata())、调用数据删除api(deleteddata())、调用数据写入api(savedata())、调用数据读取api。

步骤145,当检测到n次调用的调用顺序符合预设调用顺序时,原生按照调用顺序依次执行n次调用,并在执行完成所有n次调用的业务逻辑后,调用最后一次调用的回调标识对应的回调函数完成回调,并清除n次调用的n个回调标识,也即原生只执行一次回调和清除标识的操作,对于第1至n-1次调用,原生执行完成业务逻辑后并不进行回调和清除标识。

例如,当前javascript脚本文件执行的4次调用依次为:调用数据读取api(对应回调id_1)、调用数据删除api(对应回调id_2)、调用数据写入api(对应回调id_3)、调用数据读取api(对应回调id_4),符合预设调用顺序。则原生执行第一次调用读取数据后,不执行回调,也不清除回调id_1,而是继续执行第二次回调删除数据,然后也不执行回调,也不清除回调id_2,继续执行第三次回调写入数据,然后也不执行回调,也不清除回调id_3,继续执行第四次回调读取数据,然后调用回调id_4对应的回调函数将最终数据返回给当前javascript脚本文件,并清除回调id_1、回调id_2、回调id_3和回调id_4。

步骤146,当检测到n次调用的调用顺序不符合预设调用顺序时,原生按照调用顺序依次执行n次调用,且在执行完成每一次调用后,调用当前调用的回调标识对应的回调函数完成回调并清除回调标识。

例如,当前javascript脚本文件执行的2次调用依次为:调用相机api(对应回调id_5)和调用数据读取api(对应回调id_6),则原生执行第一次调用打开相机应用后,调用回调id_5对应的回调函数完成回调并清除回调id_5,然后原生执行第二次调用读取数据后,调用回调id_6对应的回调函数完成回调并清除回调id_6。

实施例三

请参考图3,示出了一种混合型应用的接口调用装置300,该装置被分割成一个或多个程序模块,每一个程序模块可以进一步被分割成一个或多个程序子模块及程序单元,该一个或多个程序模块被存储在存储介质中,并由一个或多个处理器所执行,以完成本发明。本发明中的程序模块、程序子模块和程序单元是指能够完成特定功能的一系列计算机程序指令段,比程序本身更适合描述接口调用装置在存储介质中能够的执行过程,以下描述将具体介绍本实施例各模块、子模块和单元等功能:

版本确定模块310,用于在通过混合型应用接收到用于通过当前javascript脚本文件调用目标api的触发操作时,确定混合型应用的版本号;

检测模块320,用于根据版本号与当前javascript脚本文件,确定混合型应用中定义的原生api中是否包括目标api;

操作模块330,用于在原生api中不包括目标api时,通过当前javascript脚本文件响应触发操作时,禁止调用目标api;

调用模块340,用于在原生api中包括目标api时,通过当前javascript脚本文件响应触发操作时,允许调用目标api。调用模块340进一步包括调用子模块341、标识生成子模块342、传送子模块343和回调子模块344,请参考图4。调用子模块341,用于通过当前javascript脚本文件执行对目标api的调用;标识生成子模块342,用于通过当前javascript脚本文件生成本次调用对应的回调标识,回调标识用于标识本次调用的回调函数;传送子模块343,用于通过当前javascript脚本文件将回调标识传送给原生;回调子模块344,用于通过原生执行本次调用的业务逻辑,并在执行完成本次调用的业务逻辑后,调用回调标识对应的回调函数完成本次调用的回调,并清除回调标识。

请参考图5,进一步的,标识生成子模块342包括参数获取单元342-1和标识生成单元342-2。参数获取单元342-1,用于获取调用触发参数,调用触发参数包括但不限于接收到调用触发操作的时间戳信息、预定时间内连续接收到调用触发操作的次数以及目标api的接口编号;标识生成单元342-2,用于根据调用触发参数生成回调标识。

请参考图6,进一步的,回调子模块344包括检测单元344-1、第一执行单元344-2以及第二执行单元344-3。检测单元344-1,用于通过原生检测n次调用的调用顺序是否符合预设调用顺序;第一执行单元344-2,用于在检测到n次调用的调用顺序符合预设调用顺序时,通过原生按照调用顺序依次执行完成n次调用的业务逻辑后,调用最后一次调用的回调标识对应的回调函数完成回调,并清除n次调用的n个回调标识;第二执行单元344-3,用于在检测到n次调用的调用顺序不符合预设调用顺序时,通过原生按照调用顺序依次执行n次调用,且在执行完成每一次调用后,调用调用的回调标识对应的回调函数完成回调并清除回调标识。

实施例四

本实施例提供一种计算机设备,如可以执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。本实施例的计算机设备70至少包括但不限于:可通过系统总线相互通信连接的存储器71和处理器72,如图7所示。需要指出的是,图7仅示出了具有存储器71和处理器72的计算机设备70,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。

本实施例中,存储器71(即可读存储介质)包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器71可以是计算机设备70的内部存储单元,例如该计算机设备70的硬盘或内存。在另一些实施例中,存储器71也可以是计算机设备70的外部存储设备,例如该计算机设备70上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。当然,存储器71还可以既包括计算机设备70的内部存储单元也包括其外部存储设备。本实施例中,存储器71通常用于存储安装于计算机设备70的操作系统和各类应用软件,例如实施例三的混合型应用的接口调用装置300的程序代码等。此外,存储器71还可以用于暂时地存储已经输出或者将要输出的各类数据。

处理器72在一些实施例中可以是中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器72通常用于控制计算机设备70的总体操作。本实施例中,处理器72用于运行存储器71中存储的程序代码或者处理数据,例如运行实施例三的混合型应用的接口调用装置300的程序代码,以实现实施例一和实施例二的混合型应用的接口调用方法。

实施例五

本实施例提供一种计算机可读存储介质,该计算机可读存储介质内存储有至少一条指令,该至少一条指令由至少一个处理器加载并执行以实现实施例一和二的接口调用方法的操作。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1