CN111767052A - H5页面与原生app的交互方法、装置及存储介质 - Google Patents
H5页面与原生app的交互方法、装置及存储介质 Download PDFInfo
- Publication number
- CN111767052A CN111767052A CN202010618670.5A CN202010618670A CN111767052A CN 111767052 A CN111767052 A CN 111767052A CN 202010618670 A CN202010618670 A CN 202010618670A CN 111767052 A CN111767052 A CN 111767052A
- Authority
- CN
- China
- Prior art keywords
- interaction
- task
- target
- page
- message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种H5页面与原生APP的交互方法、装置及存储介质,所述方法包括:当目标APP加载H5页面时,将预设文件加载到所述H5页面中;其中,所述预设文件包括:消息队列和交互协议;将所述H5页面发送至所述目标APP的交互消息添加到所述消息队列中,并根据所述交互协议通知所述目标APP,以供所述目标APP从所述消息队列中获取所述交互消息;通过调用任务解析器确定出与所述交互消息中的交互类型信息对应的目标任务处理器,并将所述交互信息中的交互参数信息添加到所述目标任务处理器中;通过调用任务管理器运行所述目标任务处理器,从而实现与所述交互消息对应的交互操作;本发明能够保证H5页面与原生APP交互的便捷性、可靠性。
Description
技术领域
本发明涉及研发管理技术领域,特别涉及一种H5页面与原生APP的交互方法、装置及存储介质。
背景技术
传统的APP开发存在更新困难、上架前审核周期长等缺陷;譬如,需要多次修改的短期活动页面,在页面开发上花费了大量的时间,在活动更新时需要修改代码并重新提交审核。因此,冗长的开发周期造成了开发人力浪费,并且容易埋下代码缺陷,从而造成APP代码质量较差。
与原生APP相比,H5页面开发周期短,更新灵活,但用户体验相较原生APP较差。因此,如何让H5页面与原生APP更好的结合,以让两者优势互补,成为技术人员亟需解决的技术问题。
发明内容
本发明的目的在于提供一种H5页面与原生APP的交互方法、装置及存储介质,能够保证H5页面与原生APP交互的便捷性、可靠性。
根据本发明的一个方面,提供了一种H5页面与原生APP的交互方法,所述方法包括:
当目标APP加载H5页面时,将预设文件加载到所述H5页面中;其中,所述预设文件包括:消息队列和交互协议;
将所述H5页面发送至所述目标APP的交互消息添加到所述消息队列中,并根据所述交互协议通知所述目标APP,以供所述目标APP从所述消息队列中获取所述交互消息;
通过调用任务解析器确定出与所述交互消息中的交互类型信息对应的目标任务处理器,并将所述交互信息中的交互参数信息添加到所述目标任务处理器中;
通过调用任务管理器运行所述目标任务处理器,从而实现与所述交互消息对应的交互操作。
可选的,所述将预设的预设文件加载到所述H5页面中,具体包括:
获取所述预设文件,并将所述预设文件读取到所述目标APP内存中;
将所述预设文件转化为字符串;
通过调用网页视图将内存中的所述字符串加载到所述H5页面中。
可选的,所述方法还包括:
当所述目标APP加载所述H5页面时,在所述目标APP中注册用于解析交互消息的任务解析器、注册用于处理不同类型的交互业务的多个任务处理器,以及注册用于管理所有任务处理器的任务管理器。
可选的,所述根据所述交互协议通知所述目标APP,以供所述目标APP从所述消息队列中获取所述交互消息,具体包括:
根据所述交互协议通过控制台日志将消息队列中的交互消息发送至所述目标APP,以供所述目标APP从所述控制台日志中获取所述交互消息。
可选的,所述通过调用任务解析器确定出与所述交互消息中的交互类型信息对应的目标任务处理器,具体包括:
通过调用所述任务解析器,利用反射机制获取包含在各个任务处理器中的任务类型注解;
通过调用所述任务解析器,确定出与所述交互类型信息对应的目标任务类型注解;
通过调用所述任务解析器,将包含所述目标任务类型注解的任务处理器设置为目标任务处理器。
可选的,所述将所述交互信息中的交互参数信息添加到所述目标任务处理器中,具体包括:
通过调用所述任务解析器解析出包含在所述目标任务处理器中的参数需求注解,并根据所述参数需求注解从所述交互消息中确定出对应的交互参数信息,并将确定出的交互参数信息添加到所述目标任务处理器中。
可选的,所述通过调用任务管理器运行所述目标任务处理器,从而实现与所述交互消息对应的交互操作,具体包括:
通过调用所述任务管理器获取所述目标任务处理器中的执行注解;其中,所述执行注解用于表征同步执行或异步执行;
若是异步执行,则使用线程池运行所述目标任务处理器;
若是同步执行,则使用UI界面线程的异步回调处理机制在主线程中运行所述目标任务处理器。
为了实现上述目的,本发明还提供一种H5页面与原生APP的交互装置,所述装置包括:
加载模块,用于当目标APP加载H5页面时,将预设文件加载到所述H5页面中;其中,所述预设文件包括:消息队列和交互协议;
处理模块,用于将所述H5页面发送至所述目标APP的交互消息添加到所述消息队列中,并根据所述交互协议通知所述目标APP,以供所述目标APP从所述消息队列中获取所述交互消息;
解析模块,用于通过调用任务解析器确定出与所述交互消息中的交互类型信息对应的目标任务处理器,并将所述交互信息中的交互参数信息添加到所述目标任务处理器中;
交互模块,用于通过调用任务管理器运行所述目标任务处理器,从而实现与所述交互消息对应的交互操作。
为了实现上述目的,本发明还提供一种计算机设备,该计算机设备具体包括:存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述介绍的H5页面与原生APP的交互方法的步骤。
为了实现上述目的,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述介绍的H5页面与原生APP的交互方法的步骤。
本发明提供的H5页面与原生APP的交互方法、装置及存储介质,能够统一H5页面在安卓系统中的代码,减少了H5页面和原生APP在交互过程中的安全漏洞,通过将APP本地预设文件注入H5页面,增加了H5页面与原生APP交互的中间层,减少了H5业务开发量,让H5开发人员专注于具体的业务逻辑。通过采用任务解析器-任务处理器-任务管理器的结构统一了H5页面与原生APP的底层交互逻辑,APP业务开发人员无需关注任务执行、线程调度、数据解析等逻辑,只需要关注业务实现。通过本实施例减少了开发人员对底层的改动,增加了APP的稳定性,提升了代码质量,同时也降低了开发人员相应的业务负担。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为实施例一提供的H5页面与原生APP的交互方法的一种可选的流程示意图;
图2为实施例二提供的H5页面与原生APP的交互装置的一种可选的组成结构示意图;
图3为实施例三提供的计算机设备的一种可选的硬件架构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本发明实施例提供了一种H5页面与原生APP的交互方法,应用于安卓系统的移动终端中,如图1所示,该方法具体包括以下步骤:
步骤S101:当目标APP加载H5页面时,将预设文件加载到所述H5页面中;其中,所述预设文件包括:消息队列和交互协议。
其中,H5页面是HTML5页面的缩写,HTML5是构建Web内容的一种语言描述方式。
具体的,所述预设文件包括:用于存储所述H5页面发送至所述目标APP的交互消息的消息队列,以及所述H5页面与所述目标APP事先约定的交互协议。
进一步的,所述将预设的预设文件加载到所述H5页面中,具体包括:
步骤A1:获取所述预设文件,并将所述预设文件读取到所述目标APP内存中;
步骤A2:将所述预设文件转化为字符串;
步骤A3:通过调用网页视图WebView将内存中的所述字符串加载到所述H5页面中。
优选的,通过调用WebView的loadUrl将内存中的所述字符串加载到所述H5页面中。
在本实施例中,预设文件是H5页面与原生APP交互的中间层,预设文件包括一个消息队列,用于临时存储H5页面发送至原生APP的交互消息。此外,预设文件实现了H5调用java的方法,在预设文件中包含了事先与原生APP约定好的交互协议。
更进一步的,所述方法还包括:
当所述目标APP加载所述H5页面时,在所述目标APP中注册用于解析交互消息的任务解析器、注册用于处理不同类型的交互业务的多个任务处理器,以及注册用于管理所有任务处理器的任务管理器。
其中,所述任务处理器包括:用户相关处理器和页面分享处理器;所述用户相关处理器用于将登录APP的用户信息发送至H5页面;所述页面分享处理器用于将H5页面分享到指定APP。
在本实施例中,开发人员事先将H5页面需要委托原生APP处理的各种类型的交互业务封装为对应的任务处理器,任务处理器的类型由APP的具体业务场景决定。例如,当H5页面需要获取登录原生APP的用户信息时,对应的创建一个用户相关处理器,以将用户信息返回给H5页面;又例如,当H5页面需要分享页面到其他社交类APP时,对应的创建一个页面分享处理器。
此外,在本实施例中,任务解析器相当于一个适配器,根据H5发起的交互消息,找到对应的任务处理器,并将交互消息转换为相应的任务处理器所需要的参数信息;所有类型的任务处理器统一由任务管理器管理并由所述任务管理器发起执行。通过使用任务解析器、任务处理器和任务管理器减少了冗余代码,业务开发人员不需要了解具体的解析、任务执行等代码的实现。
步骤S102:将所述H5页面发送至所述目标APP的交互消息添加到所述消息队列中,并根据所述交互协议通知所述目标APP,以供所述目标APP从所述消息队列中获取所述交互消息。
其中,所述交互消息包括:交互类型信息和交互参数信息。
在本实施例中,当H5页面初始化完成后,业务js可以调用预设文件中的js函数以将交互消息放入消息队列中;此外,业务js需要传递给目标APP的交互参数信息可以用json封装,以达到面向对象开发。
需要说明的是,交互消息是一条json字符串,包含了交互类型信息以及执行交互任务所需要的交互参数信息;例如,当交互类型信息为用户相关交互类型时,需要调用用户相关处理器,以获取登录目标APP的用户信息,由于用户信息涉及隐私问题,所以需要用户相关处理器对H5页面进行校验,以判断H5页面是否有权限获取用户信息,那么在交互消息的交互参数信息中就需要包含AppSecret信息和AppKey信息,以供用户相关处理器基于AppSecret信息和AppKey信息对H5页面进行权限校验,只有在校验通过之后才会将用户信息反馈给H5页面。
具体的,所述根据所述预设文件中的交互协议通知所述目标APP,以供所述目标APP从所述消息队列中获取所述交互消息,包括:
根据所述交互协议通过控制台日志console.log将消息队列中的交互消息发送至所述目标APP,以供所述目标APP通过onConsoleMessage从所述控制台日志console.log中获取所述交互消息。
在本实施例中,通过调用console.log从所述消息队列中获取交互消息,并将所述交互消息发送至所述目标APP。通过加载H5页面的WebView监听所述预设文件打印的console.log,所述交互消息通过console.log的参数传递为目标APP。在本实施例中使用log监听协议,可以避免占用WebViewClient。
此外,在本实施例中,当目标APP通过WebView加载H5页面时,目标APP注册WebChromeClient以实现onConsoleMessage方法,从而通过onConsoleMessage方法监听交互消息。当console.log被调用时,WebView会回调onConsoleMessage,以获取交互消息。
步骤S103:通过调用任务解析器确定出与所述交互消息中的交互类型信息对应的目标任务处理器,并将所述交互信息中的交互参数信息添加到所述目标任务处理器中。
具体的,所述通过调用任务解析器确定出与所述交互消息中的交互类型信息对应的目标任务处理器,具体包括:
步骤B1:通过调用所述任务解析器,利用反射机制获取包含在各个任务处理器中的任务类型注解;
步骤B2:通过调用所述任务解析器,确定出与所述交互类型信息对应的目标任务类型注解;
步骤B3:通过调用所述任务解析器,将包含所述目标任务类型注解的任务处理器设置为目标任务处理器。
需要说明的是,在创建任务处理器时需要对包含在任务处理器中的各个方法设置对应的方法注解任务类型(target类型:ElementType.METHOD),任务任务解析器利用反射机制,获取任务处理器中的各个方法的任务类型注解,并确定出与交互类型信息对应的目标任务类型注解。
进一步的,所述将所述交互信息中的交互参数信息添加到所述目标任务处理器中,具体包括:
通过调用所述任务解析器解析出包含在所述目标任务处理器中的参数需求注解,并根据所述参数需求注解从所述交互消息中确定出对应的交互参数信息,并将确定出的交互参数信息添加到所述目标任务处理器中。
需要说明的是,在创建任务处理器时需要在任务处理器中添加类成员变量注解需求标识(target类型:ElementType.FIELD),若任务处理器中的成员变量使用了需求标识注解,则表明该成员变量在任务实行时需要赋予对应的参数值,当任务解析器解析出添加有需求标识注解的成员变量时,从所述交互消息的交互参数信息中确定出与所述成员变量对应的变量值,并将所述变量值赋给所述成员变量。在本实施例中,任务任务解析器通过反射和注解方式,提前将H5页面的参数信息封装好传递给任务处理器。
步骤S104:通过调用所述任务解析器,将包含所述目标任务类型注解的任务处理器设置为目标任务处理器。
具体的,步骤S104,包括:
通过调用所述任务管理器获取所述目标任务处理器中的执行注解;其中,所述执行注解用于表征同步执行或异步执行;
若是异步执行,则使用线程池运行所述目标任务处理器;
若是同步执行,则使用UI界面线程的异步回调处理Handler机制在主线程中运行所述目标任务处理器。
需要说明的是,在定义各个任务处理器时需要通过执行注解标识对应任务处理器执行任务时是同步执行还是异步执行,如果是异步任务则使用线程池执行,如果是同步任务则使用UI线程的Handler发送至主线程执行。
通过本实施例能够统一H5页面在安卓系统中的代码,减少了H5页面和原生APP在交互过程中的安全漏洞,通过将APP本地预设文件注入H5页面,增加了H5页面与原生APP交互的中间层,减少了H5业务开发量,让H5开发人员专注于具体的业务逻辑。通过采用任务解析器-任务处理器-任务管理器的结构统一了H5页面与原生APP的底层交互逻辑,APP业务开发人员无需关注任务执行、线程调度、数据解析等逻辑,只需要关注业务实现。通过本实施例减少了开发人员对底层的改动,增加了APP的稳定性,提升了代码质量,同时也降低了开发人员相应的业务负担。
实施例二
本发明实施例提供了一种H5页面与原生APP的交互装置,如图2所示,该装置具体包括以下组成部分:
1)加载模块201,用于当目标APP加载H5页面时,将预设文件加载到所述H5页面中;其中,所述预设文件包括:消息队列和交互协议。
具体的,加载模块201,用于:
获取所述预设文件,并将所述预设文件读取到所述目标APP内存中;
将所述预设文件转化为字符串;
通过调用网页视图将内存中的所述字符串加载到所述H5页面中。
进一步的,所述装置还包括:
注册模块,用于当所述目标APP加载所述H5页面时,在所述目标APP中注册用于解析交互消息的任务解析器、注册用于处理不同类型的交互业务的多个任务处理器,以及注册用于管理所有任务处理器的任务管理器。
其中,所述任务处理器包括:用户相关处理器和页面分享处理器;所述用户相关处理器用于将登录APP的用户信息发送至H5页面;所述页面分享处理器用于将H5页面分享到指定APP。
2)处理模块202,用于将所述H5页面发送至所述目标APP的交互消息添加到所述消息队列中,并根据所述交互协议通知所述目标APP,以供所述目标APP从所述消息队列中获取所述交互消息。
其中,所述交互消息包括:交互类型信息和交互参数信息。
具体的,处理模块202,用于:
根据所述交互协议通过控制台日志console.log将消息队列中的交互消息发送至所述目标APP,以供所述目标APP通过onConsoleMessage从所述控制台日志console.log中获取所述交互消息。
在本实施例中,通过调用console.log从所述消息队列中获取交互消息,并将所述交互消息发送至所述目标APP。通过加载H5页面的WebView监听所述预设文件打印的console.log,所述交互消息通过console.log的参数传递为目标APP。在本实施例中使用log监听协议,可以避免占用WebViewClient。
此外,在本实施例中,当目标APP通过WebView加载H5页面时,目标APP注册WebChromeClient以实现onConsoleMessage方法,从而通过onConsoleMessage方法监听交互消息。当console.log被调用时,WebView会回调onConsoleMessage,以获取交互消息。
3)解析模块203,用于通过调用任务解析器确定出与所述交互消息中的交互类型信息对应的目标任务处理器,并将所述交互信息中的交互参数信息添加到所述目标任务处理器中。
具体的,解析模块203,包括:
确定单元,用于通过调用所述任务解析器,利用反射机制获取包含在各个任务处理器中的任务类型注解;通过调用所述任务解析器,确定出与所述交互类型信息对应的目标任务类型注解;通过调用所述任务解析器,将包含所述目标任务类型注解的任务处理器设置为目标任务处理器。
添加单元,用于通过调用所述任务解析器解析出包含在所述目标任务处理器中的参数需求注解,并根据所述参数需求注解从所述交互消息中确定出对应的交互参数信息,并将确定出的交互参数信息添加到所述目标任务处理器中。
4)交互模块204,用于通过调用任务管理器运行所述目标任务处理器,从而实现与所述交互消息对应的交互操作。
具体的,交互模块204,用于:
通过调用所述任务管理器获取所述目标任务处理器中的执行注解;其中,所述执行注解用于表征同步执行或异步执行;
若是异步执行,则使用线程池运行所述目标任务处理器;
若是同步执行,则使用UI界面线程的异步回调处理Handler机制在主线程中运行所述目标任务处理器。
需要说明的是,在定义各个任务处理器时需要通过执行注解标识对应任务处理器执行任务时是同步执行还是异步执行,如果是异步任务则使用线程池执行,如果是同步任务则使用UI线程的Handler发送至主线程执行。
通过本实施例能够统一H5页面在安卓系统中的代码,减少了H5页面和原生APP在交互过程中的安全漏洞,通过将APP本地预设文件注入H5页面,增加了H5页面与原生APP交互的中间层,减少了H5业务开发量,让H5开发人员专注于具体的业务逻辑。通过采用任务解析器-任务处理器-任务管理器的结构统一了H5页面与原生APP的底层交互逻辑,APP业务开发人员无需关注任务执行、线程调度、数据解析等逻辑,只需要关注业务实现。通过本实施例减少了开发人员对底层的改动,增加了APP的稳定性,提升了代码质量,同时也降低了开发人员相应的业务负担。
实施例三
本实施例还提供一种计算机设备,如可以执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图3所示,本实施例的计算机设备30至少包括但不限于:可通过系统总线相互通信连接的存储器301、处理器302。需要指出的是,图3仅示出了具有组件301-302的计算机设备30,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
本实施例中,存储器301(即可读存储介质)包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器301可以是计算机设备30的内部存储单元,例如该计算机设备30的硬盘或内存。在另一些实施例中,存储器301也可以是计算机设备30的外部存储设备,例如该计算机设备30上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器301还可以既包括计算机设备30的内部存储单元也包括其外部存储设备。在本实施例中,存储器301通常用于存储安装于计算机设备30的操作系统和各类应用软件。此外,存储器301还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器302在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器302通常用于控制计算机设备30的总体操作。
具体的,在本实施例中,处理器302用于执行处理器302中存储的H5页面与原生APP的交互方法的程序,所述H5页面与原生APP的交互方法的程序被执行时实现如下步骤:
当目标APP加载H5页面时,将预设文件加载到所述H5页面中;其中,所述预设文件包括:消息队列和交互协议;
将所述H5页面发送至所述目标APP的交互消息添加到所述消息队列中,并根据所述交互协议通知所述目标APP,以供所述目标APP从所述消息队列中获取所述交互消息;
通过调用任务解析器确定出与所述交互消息中的交互类型信息对应的目标任务处理器,并将所述交互信息中的交互参数信息添加到所述目标任务处理器中;
通过调用任务管理器运行所述目标任务处理器,从而实现与所述交互消息对应的交互操作。
上述方法步骤的具体实施例过程可参见第一实施例,本实施例在此不再重复赘述。
实施例四
本实施例还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,所述计算机程序被处理器执行时实现如下方法步骤:
当目标APP加载H5页面时,将预设文件加载到所述H5页面中;其中,所述预设文件包括:消息队列和交互协议;
将所述H5页面发送至所述目标APP的交互消息添加到所述消息队列中,并根据所述交互协议通知所述目标APP,以供所述目标APP从所述消息队列中获取所述交互消息;
通过调用任务解析器确定出与所述交互消息中的交互类型信息对应的目标任务处理器,并将所述交互信息中的交互参数信息添加到所述目标任务处理器中;
通过调用任务管理器运行所述目标任务处理器,从而实现与所述交互消息对应的交互操作。
上述方法步骤的具体实施例过程可参见第一实施例,本实施例在此不再重复赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种H5页面与原生APP的交互方法,其特征在于,所述方法包括:
当目标APP加载H5页面时,将预设文件加载到所述H5页面中;其中,所述预设文件包括:消息队列和交互协议;
将所述H5页面发送至所述目标APP的交互消息添加到所述消息队列中,并根据所述交互协议通知所述目标APP,以供所述目标APP从所述消息队列中获取所述交互消息;
通过调用任务解析器确定出与所述交互消息中的交互类型信息对应的目标任务处理器,并将所述交互信息中的交互参数信息添加到所述目标任务处理器中;
通过调用任务管理器运行所述目标任务处理器,从而实现与所述交互消息对应的交互操作。
2.根据权利要求1所述的H5页面与原生APP的交互方法,其特征在于,所述将预设的预设文件加载到所述H5页面中,具体包括:
获取所述预设文件,并将所述预设文件读取到所述目标APP内存中;
将所述预设文件转化为字符串;
通过调用网页视图将内存中的所述字符串加载到所述H5页面中。
3.根据权利要求1所述的H5页面与原生APP的交互方法,其特征在于,所述方法还包括:
当所述目标APP加载所述H5页面时,在所述目标APP中注册用于解析交互消息的任务解析器、注册用于处理不同类型的交互业务的多个任务处理器,以及注册用于管理所有任务处理器的任务管理器。
4.根据权利要求1所述的H5页面与原生APP的交互方法,其特征在于,所述根据所述交互协议通知所述目标APP,以供所述目标APP从所述消息队列中获取所述交互消息,具体包括:
根据所述交互协议通过控制台日志将消息队列中的交互消息发送至所述目标APP,以供所述目标APP从所述控制台日志中获取所述交互消息。
5.根据权利要求1所述的H5页面与原生APP的交互方法,其特征在于,所述通过调用任务解析器确定出与所述交互消息中的交互类型信息对应的目标任务处理器,具体包括:
通过调用所述任务解析器,利用反射机制获取包含在各个任务处理器中的任务类型注解;
通过调用所述任务解析器,确定出与所述交互类型信息对应的目标任务类型注解;
通过调用所述任务解析器,将包含所述目标任务类型注解的任务处理器设置为目标任务处理器。
6.根据权利要求1所述的H5页面与原生APP的交互方法,其特征在于,所述将所述交互信息中的交互参数信息添加到所述目标任务处理器中,具体包括:
通过调用所述任务解析器解析出包含在所述目标任务处理器中的参数需求注解,并根据所述参数需求注解从所述交互消息中确定出对应的交互参数信息,并将确定出的交互参数信息添加到所述目标任务处理器中。
7.根据权利要求1所述的H5页面与原生APP的交互方法,其特征在于,所述通过调用任务管理器运行所述目标任务处理器,从而实现与所述交互消息对应的交互操作,具体包括:
通过调用所述任务管理器获取所述目标任务处理器中的执行注解;其中,所述执行注解用于表征同步执行或异步执行;
若是异步执行,则使用线程池运行所述目标任务处理器;
若是同步执行,则使用UI界面线程的异步回调处理机制在主线程中运行所述目标任务处理器。
8.一种H5页面与原生APP的交互装置,其特征在于,所述装置包括:
加载模块,用于当目标APP通过WebView加载H5页面时,将预设的预设文件加载到所述H5页面中;其中,所述预设文件包括:消息队列和交互协议;
处理模块,用于将所述H5页面发送至所述目标APP的交互消息添加到所述消息队列中,并根据所述交互协议通知所述目标APP,以供所述目标APP从所述消息队列中获取所述交互消息;
解析模块,用于通过调用任务解析器确定出与所述交互消息中的交互类型信息对应的目标任务处理器,并将所述交互信息中的交互参数信息添加到所述目标任务处理器中;
交互模块,用于通过调用任务管理器运行所述目标任务处理器,从而实现与所述交互消息对应的交互操作。
9.一种计算机设备,所述计算机设备包括:存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010618670.5A CN111767052A (zh) | 2020-06-30 | 2020-06-30 | H5页面与原生app的交互方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010618670.5A CN111767052A (zh) | 2020-06-30 | 2020-06-30 | H5页面与原生app的交互方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111767052A true CN111767052A (zh) | 2020-10-13 |
Family
ID=72723031
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010618670.5A Pending CN111767052A (zh) | 2020-06-30 | 2020-06-30 | H5页面与原生app的交互方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111767052A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113065079A (zh) * | 2021-04-13 | 2021-07-02 | 开鑫金服(南京)信息服务有限公司 | 基于地址协议实现调用原生页面的方法、设备及存储介质 |
CN114416195A (zh) * | 2021-12-24 | 2022-04-29 | 青岛海尔科技有限公司 | 一种h5页面加载方法、装置、智能终端及服务器 |
-
2020
- 2020-06-30 CN CN202010618670.5A patent/CN111767052A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113065079A (zh) * | 2021-04-13 | 2021-07-02 | 开鑫金服(南京)信息服务有限公司 | 基于地址协议实现调用原生页面的方法、设备及存储介质 |
CN113065079B (zh) * | 2021-04-13 | 2023-10-13 | 开鑫金服(南京)信息服务有限公司 | 基于地址协议实现调用原生页面的方法、设备及存储介质 |
CN114416195A (zh) * | 2021-12-24 | 2022-04-29 | 青岛海尔科技有限公司 | 一种h5页面加载方法、装置、智能终端及服务器 |
CN114416195B (zh) * | 2021-12-24 | 2023-08-18 | 青岛海尔科技有限公司 | 一种h5页面加载方法、装置、智能终端及服务器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2014207730B2 (en) | Systems and methods for building and using hybrid mobile applications | |
US20180357085A1 (en) | Method and apparatus for running android application on windows system | |
CN108762956B (zh) | 获取Native本地数据的方法、服务器、移动终端及存储介质 | |
CN111767052A (zh) | H5页面与原生app的交互方法、装置及存储介质 | |
CN109284198A (zh) | 一种校验数据的方法和装置 | |
CN112346944B (zh) | 一种监控网页用户操作体验的方法、设备及存储介质 | |
CN113536185B (zh) | 应用页面的加载方法、存储介质、及其相关设备 | |
US20160197863A1 (en) | Schedule based execution with extensible continuation based actions | |
CN111831365A (zh) | 接口路由转发方法、系统、计算机设备及可读存储介质 | |
CN113050984A (zh) | 资源调取方法、装置、电子设备及存储介质 | |
CN112596746B (zh) | 应用安装包生成方法、装置、计算机设备和存储介质 | |
US20210263736A1 (en) | Semantic functional wrappers of services | |
CN107450946B (zh) | Chrome网页与终端软件通讯方法、设备及存储介质 | |
CN112099965B (zh) | 原生应用调用js的方法、装置、电子设备及存储介质 | |
CN111240998B (zh) | 测试用例处理方法和装置 | |
CN112015563A (zh) | 消息队列切换方法、装置、电子设备及存储介质 | |
CN112083945A (zh) | Npm安装包的更新提示方法、装置、电子设备及存储介质 | |
CN112632495A (zh) | 微信公众号的管理方法、装置和电子设备 | |
CN108804236B (zh) | 一种aidl文件的共享方法及系统 | |
CN111400058B (zh) | 调用消息的方法、装置、计算机设备及存储介质 | |
CN110599112A (zh) | 一种网络页面开发、维护方法和装置 | |
US20130046840A1 (en) | System and method for dynamically generating an email message | |
CN112667441A (zh) | 基于容错功能的业务模块调度方法、系统及存储介质 | |
CN113626001A (zh) | 一种基于脚本的api动态编排方法及装置 | |
CN118466922B (zh) | React应用通过facebook-JSSDK发布内容的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |