HTML5应用调用原生应用的方法和装置.pdf

上传人:汲墨****o 文档编号:10978090 上传时间:2021-08-28 格式:PDF 页数:15 大小:525.49KB
收藏 版权申诉 举报 下载
HTML5应用调用原生应用的方法和装置.pdf_第1页
第1页 / 共15页
HTML5应用调用原生应用的方法和装置.pdf_第2页
第2页 / 共15页
HTML5应用调用原生应用的方法和装置.pdf_第3页
第3页 / 共15页
文档描述:

《HTML5应用调用原生应用的方法和装置.pdf》由会员分享,可在线阅读,更多相关《HTML5应用调用原生应用的方法和装置.pdf(15页完成版)》请在专利查询网上搜索。

1、(19)中华人民共和国国家知识产权局 (12)发明专利申请 (10)申请公布号 (43)申请公布日 (21)申请号 201910808765.0 (22)申请日 2019.08.29 (71)申请人 北京三快在线科技有限公司 地址 100190 北京市海淀区北四环西路9号 2106-030 (72)发明人 王阳杨天石鹏万俊嘉 (74)专利代理机构 北京市隆安律师事务所 11323 代理人 权鲜枝赵美林 (51)Int.Cl. G06F 9/448(2018.01) (54)发明名称 一种HTML5应用调用原生应用的方法和装置 (57)摘要 本申请实施例公开了一种HTML5应用调用原 生应用的方。

2、法和装置。 HTML5应用调用原生应用 的方法包括: 响应于HTML5应用的启动指令, 检测 HTML5应用所处的原生应用; 创建与原生应用匹 配的适配器; 适配器是所述原生应用提供的JS SDK对象的实例; 拦截HTML5应用调用预设的统一 入口函数的调用指令, 并依据调用指令调用适配 器的第一函数, 通过适配器的第一函数调用JS SDK对象, 并通过JSSDK对象调用原生应用的功 能; 其中, 第一函数是与调用指令中的函数名称 相同的函数。 解决了HTML5应用调用原生应用时, 代码逻辑重用困难以及对业务的侵入较大, 影响 开发效率的问题。 权利要求书2页 说明书10页 附图2页 CN 1。

3、10704131 A 2020.01.17 CN 110704131 A 1.一种HTML5应用调用原生应用的方法, 其特征在于, 所述方法包括: 响应于所述HTML5应用的启动指令, 检测所述HTML5应用所处的原生应用; 创建与所述原生应用匹配的适配器; 所述适配器是所述原生应用提供的JSSDK对象的 实例; 拦截所述HTML5应用调用预设的统一入口函数的调用指令, 并依据所述调用指令调用 所述适配器的第一函数, 通过所述适配器的第一函数调用所述JSSDK对象, 并通过所述 JSSDK对象调用所述原生应用的功能; 其中, 所述第一函数是与所述调用指令中的函数名称 相同的函数。 2.如权利要。

4、求1所述的方法, 其特征在于, 所述检测所述HTML5应用所处的原生应用包 括: 获取浏览器信息; 其中所述浏览器信息是启动所述HTML5应用的所述原生应用的内置 浏览器的信息; 如果所述浏览器信息中存在预设的关键词, 则将所述关键词指示的原生应用确定为所 述HTML5应用所处的原生应用。 3.如权利要求1所述的方法, 其特征在于, 所述创建与所述原生应用匹配的适配器包 括: 依据所述原生应用提供的JSSDK对象创建适配器, 并调用所述适配器的认证函数, 通过 所述认证函数调用所述原生应用的认证服务, 以对所述JS SDK对象进行安全性认证。 4.如权利要求1-3中任一项所述的方法, 其特征在。

5、于, 该方法还包括: 在依据所述调用指令调用所述适配器的第一函数之前, 监控调用所述第一函数的调用 请求, 获得调用请求监控数据; 以及, 在依据所述调用指令调用所述适配器的第一函数后, 监控与所述第一函数对应 的回调函数返回的调用结果, 获得调用结果监控数据; 将所述调用请求监控数据以及所述调用结果监控数据上报至监控平台, 以使所述监控 平台对所述调用请求监控数据以及所述调用结果监控数据中的异常信息进行汇总分析。 5.如权利要求1所述的方法, 其特征在于, 该方法还包括: 判断所述JSSDK对象是否成功调用所述原生应用的功能; 如果未成功, 则通过所述适配器触发调用预设的HTML5页面; 其。

6、中, 所述预设的HTML5页面实现的功能与所述原生应用的功能相同。 6.如权利要求5所述的方法, 其特征在于, 所述判断所述JSSDK对象是否成功调用所述 原生应用的功能包括: 如果所述JSSDK对象中不存在与所述第一函数对应的第二函数, 则确定所述JSSDK对象 未成功调用所述原生应用的功能; 或, 如果所述JSSDK对象中存在所述第二函数且所述第二函数返回的调用结果为异常, 则 确定所述JSSDK对象未成功调用所述原生应用的功能。 7.如权利要求4所述的方法, 其特征在于, 所述通过所述适配器的第一函数调用所述 JSSDK对象, 并通过所述JSSDK对象调用所述原生应用的功能还包括: 在将。

7、所述调用结果监控数据上报所述监控平台之前, 统计所述调用结果的异常次数, 权利要求书 1/2 页 2 CN 110704131 A 2 如果所述异常次数超过预设降级策略中的次数阈值, 则在拦截到新的调用指令时, 触 发调用预设的HTML5页面; 所述预设的HTML5页面实现的功能与所述原生应用的功能相同。 8.如权利要求1所述的方法, 其特征在于, 所述通过所述适配器的第一函数调用所述 JSSDK对象, 并通过所述JSSDK对象调用所述原生应用的功能包括: 如果所述原生应用中存在所述JSSDK对象, 则通过所述适配器的所述第一函数调用所 述JSSDK对象; 如果所述原生应用中不存在所述JSSD。

8、K对象, 则通过所述适配器控制加载所述JSSDK对 象并关联所述JSSDK对象后, 通过所述适配器的第一函数调用所述JSSDK对象。 9.一种HTML5应用调用原生应用的装置, 其特征在于, 所述装置应用于HTML5应用, 包括 代理模块; 所述代理模块, 响应于所述HTML5应用的启动指令, 检测所述HTML5应用所处的原生应 用; 所述代理模块, 创建与所述原生应用匹配的适配器; 所述适配器是所述原生应用提供 的JSSDK对象的实例; 所述代理模块, 在拦截到所述HTML5应用调用所述代理模块预设的统一入口函数的调 用指令时, 调用所述适配器中的第一函数, 以通过所述第一函数调用所述JSS。

9、DK对象, 并通 过所述JSSDK对象调用所述原生应用的功能。 10.一种电子设备, 其特征在于, 所述电子设备包括: 处理器, 以及存储有可在处理器上 运行的计算机程序的存储器; 其中, 所述处理器, 用于在执行所述存储器中的计算机程序时执行权利要求1-8中任一 项所述的方法。 11.一种非瞬时性计算机可读存储介质, 其上存储有计算机程序, 其特征在于, 该计算 机程序被处理器执行时实现权利要求1-8中任一项所述方法的步骤。 权利要求书 2/2 页 3 CN 110704131 A 3 一种HTML5应用调用原生应用的方法和装置 技术领域 0001 本申请涉及计算机技术领域, 具体涉及一种H。

10、TML5应用调用原生应用的方法和装 置。 背景技术 0002 在移动互联时代, 为了业务的快速开发以及各业务的安全隔离, 越来越多的业务 采用Web应用(即HTML5应用, 或称H5页面)方式进行开发, HTML5作为一门重要的开发语言, 具有开发速度快、 运行效率高、 安全性好、 可扩展性强等优点。 借助于原生应用或第三方提 供的JSSDK(JavaScript Software Development Kit, 适合于JavaScript语言的开发工具 包), HTML 5应用可以调用原生应用(Native App, 也称为本地App)相关组件的功能。 比如, 直接在H5页面中唤起原生应用。

11、的分享、 登录、 获取精确地理信息等功能。 0003 但是, 由于各JSSDK的提供方并没有直接提供调用原生应用各应用接口的访问控 制钩子函数, 当H5页面业务想要统计应用接口的调用频率, 监控应用接口的异常, 控制应用 接口的访问权限等不同操作时, 就需要在每个调用的地方手动埋入访问控制相关逻辑, 规 范处理输入参数和输出参数。 而访问控制逻辑与业务没有关联性, 所以在各业务调用点手 动埋入访问控制相关逻辑虽然实现简单, 但重用困难, 并且对业务的侵入较大。 发明内容 0004 有鉴于此, 本申请实施例提供了一种HTML5应用调用原生应用的方法和装置, 解决 或至少部分解决HTML5业务应用。

12、调用原生应用时, 代码逻辑重用困难以及对业务的侵入较 大, 影响开发效率的问题。 0005 根据本申请的第一个方面, 提供了一种HTML5应用调用原生应用的方法, 所述方法 包括: 0006 响应于所述HTML5应用的启动指令, 检测所述HTML5应用所处的原生应用; 0007 创建与所述原生应用匹配的适配器; 所述适配器是所述原生应用提供的JS SDK对 象的实例; 0008 拦截所述HTML5应用调用预设的统一入口函数的调用指令, 并依据所述调用指令 调用所述适配器的第一函数, 通过所述适配器的第一函数调用所述JS SDK对象, 并通过所 述JS SDK对象调用所述原生应用的功能; 其中,。

13、 所述第一函数是与所述调用指令中的函数 名称相同的函数。 0009 可选地, 所述检测所述HTML5应用所处的原生应用包括: 0010 获取浏览器信息; 其中所述浏览器信息是启动所述HTML5应用的所述原生应用的 内置浏览器的信息; 0011 如果所述浏览器信息中存在预设的关键词, 则将所述关键词指示的原生应用确定 为所述HTML5应用所处的原生应用。 0012 可选地, 所述创建与所述原生应用匹配的适配器包括: 说明书 1/10 页 4 CN 110704131 A 4 0013 依据所述原生应用提供的所述JS SDK对象创建适配器, 并调用所述适配器的认证 函数, 通过所述认证函数调用所述。

14、原生应用的认证服务, 以对所述JS SDK对象进行安全性 认证。 0014 可选地, 该方法还包括: 0015 在依据所述调用指令调用所述适配器的第一函数之前, 监控调用所述第一函数的 调用请求, 获得调用请求监控数据; 0016 以及, 在依据所述调用指令调用所述适配器的第一函数后, 监控与所述第一函数 对应的回调函数返回的调用结果, 获得调用结果监控数据; 0017 将所述调用请求监控数据以及所述调用结果监控数据上报至监控平台, 以使所述 监控平台对所述调用请求监控数据以及所述调用结果监控数据中的异常信息进行汇总分 析。 0018 可选地, 该方法还包括: 0019 判断所述JS SDK对。

15、象是否成功调用所述原生应用的功能; 0020 如果未成功, 则通过所述适配器触发调用预设的HTML5页面; 0021 其中, 所述预设的HTML5页面实现的功能与所述原生应用的功能相同。 0022 可选地, 所述判断所述JS SDK对象是否成功调用所述原生应用的功能包括: 0023 如果所述JS SDK对象中不存在与所述第一函数对应的第二函数, 则确定所述JS SDK对象未成功调用所述原生应用的功能; 0024 或, 0025 如果所述JS SDK对象中存在所述第二函数且所述第二函数返回的调用结果为异 常, 则确定所述JS SDK对象未成功调用所述原生应用的功能。 0026 可选地, 所述通过。

16、所述适配器的第一函数调用所述JS SDK对象, 并通过所述JS SDK对象调用所述原生应用的功能还包括: 0027 在将所述调用结果监控数据上报所述监控平台之前, 统计所述调用结果的异常次 数, 0028 如果所述异常次数超过预设降级策略中的次数阈值, 则在拦截到新的调用指令 时, 触发调用预设的HTML5页面; 0029 其中, 所述预设降级策略基于所述调用结果监控数据设置, 所述预设的HTML5页面 实现的功能与所述原生应用的功能相同。 0030 可选地, 所述通过所述适配器的第一函数调用所述JS SDK对象, 并通过所述JS SDK对象调用所述原生应用的功能包括: 0031 如果所述原生。

17、应用中存在所述JS SDK对象, 则通过所述适配器的所述第一函数调 用所述JS SDK对象; 0032 如果所述原生应用中不存在所述JS SDK对象, 则通过所述适配器控制加载所述JS SDK对象并关联所述JS SDK对象后, 通过所述适配器的第一函数调用所述JS SDK对象。 0033 根据本申请的另一个方面, 提供了一种HTML5应用调用原生应用的装置, 所述装置 应用于HTML5应用, 包括代理模块, 0034 所述代理模块, 响应于所述HTML5应用的启动指令, 检测所述HTML5应用所处的原 生应用; 说明书 2/10 页 5 CN 110704131 A 5 0035 所述代理模块。

18、, 创建与所述原生应用匹配的适配器; 所述适配器是所述原生应用 提供的JS SDK对象的实例; 0036 所述代理模块, 在拦截到所述HTML5应用调用所述代理模块预设的统一入口函数 的调用指令时, 调用所述适配器中的第一函数, 以通过所述第一函数调用所述JS SDK对象, 并通过所述JS SDK对象调用所述原生应用的功能。 0037 根据本申请的又一个方面, 提供了一种电子设备, 所述电子设备包括: 处理器, 以 及存储有可在处理器上运行的计算机程序的存储器; 其中, 所述处理器, 用于在执行所述存 储器中的计算机程序时执行如本申请一个方面所述的方法。 0038 根据本申请的再一个方面, 提。

19、供了一种非瞬时性计算机可读存储介质, 其上存储 有计算机程序, 其特征在于, 该计算机程序被处理器执行时实现如本申请一个方面所述方 法的步骤。 0039 有益效果: 本申请实施例的HTML5应用调用原生应用的技术方案, 响应于HTML5应 用的启动指令, 检测HTML5应用所处的原生应用, 创建与原生应用匹配的适配器(适配器即 原生应用的JS SDK对象实例), 拦截HTML5应用调用预设的统一入口函数的调用指令, 并依 据调用指令调用适配器的第一函数, 通过第一函数调用JS SDK对象进而通过JS SDK对象调 用原生应用的功能。 如此, 通过入口收敛和切面拦截, 对于业务方而言, 只需要编。

20、写一套 HTML5应用的业务代码, 应对不同的原生应用, 实现了代码的重用, 业务方不需要关注HTML5 应用在哪一个原生应用环境中运行, 提高了开发效率, 而且也不需要在业务中手动埋入访 问控制逻辑, 避免了对业务的侵入。 附图说明 0040 图1是本申请一个实施例的HTML5应用调用原生应用的方法的流程图; 0041 图2是本申请一个实施例的HTML5应用调用原生应用的方法的流程示意图; 0042 图3是本申请一个实施例的HTML5应用调用原生应用的装置的框图; 0043 图4是本申请一个实施例的电子设备的结构示意图; 0044 图5是本申请一个实施例的非瞬时性计算机可读存储介质的结构示意。

21、图。 具体实施方式 0045 为使本申请实施例的上述目的、 特征和优点能够更加明显易懂, 下面结合附图和 具体实施方式对本申请实施例作进一步详细的说明。 显然, 所描述的实施例是本申请一部 分实施例, 而不是全部的实施例。 基于本申请中的实施例, 本领域普通技术人员在没有做出 创造性劳动前提下所获得的所有其他实施例, 都属于本申请实施例保护的范围。 0046 本申请的技术构思是: 针对现有HTML5应用调用各个原生应用时需要在HTML5应用 的切入点埋入相应的逻辑代码, 导致重用困难和对HTML5应用的侵入较大的技术问题, 提出 一种HTML5应用调用原生应用的技术方案, 该技术方案通过在HT。

22、ML5应用中内嵌代理, 由代 理进行入口收敛并检测HTML5应用当前所处的运行环境(即, 原生应用), 并基于运行环境的 不同创建与运行环境匹配的一个适配器, 后续拦截HTML5应用调用原生应用的指令, 并通过 适配器的函数调用JS SDK对象, 由于适配器是JS SDK对象的实例, 所以调用适配器即可实 现调用原生应用相应功能的技术效果。 如此, 对于业务方(即HTML5应用)而言, 其无需关注 说明书 3/10 页 6 CN 110704131 A 6 具体的运行环境, 对各个原生应用的调用参数(比如函数名)都是统一的, 实现了代码的重 用, 并且不需要在各切入点埋入控制逻辑, 避免了对业。

23、务的侵入, 满足了实际需求。 0047 为便于理解, 这里对HTML5应用、 原生应用以及JS SDK的关系进行说明。 HTML5是新 发布的一种技术, HTML5应用(或称H5页面)是一种Web应用, 包含HTML5的标记规范, 开发者 可以在没有任何设备限制的环境中开发web应用。 原生应用是基于操作系统开发, 能直接运 行于当前操作系统的应用程序。 JS-SDK(JavaScript Software Development Kit)是适合 JavaScript语言的软件开发工具包。 0048 以微信的实现分享功能的H5页面为例, 微信集成有浏览器, 使得用户可以通过微 信的浏览器来加载。

24、和打开H5分享页面, 这里, 微信就是原生应用, H5分享页面就是HTML5应 用。 而H5分享页面通过微信提供的JSSDK来调用微信的原生的分享功能, 从而实现分享这一 操作。 0049 可知, H5分享页面的运行环境与JSSDK是一对一的关系, 而H5分享页面与运行环境 是一对多的关系。 也就是说, 同一个H5分享页面可以运行于微信原生应用中, 可以运行于美 团原生应用中, 还可以运行于微博原生应用中等等。 当H5分享页面运行于微信这一原生应 用时, 需要通过微信的JSSDK最终实现分享功能。 那么业务方在开发H5页面时需要针对不同 原生应用的JSSDK编写相应的代码, 比如, 对应微信中。

25、的分享功能, 编写分享代码1, 对应美 团的分享功能, 编写分享代码2, 代码的重用困难, 并且对业务的侵入比较大。 0050 本申请提出在H5中内置原生应用的代理, 利用切面拦截技术, 由代理自动帮助业 务选择匹配的运行环境, 并处理环境相关的逻辑, 对于业务方而言, 不需要关注运行环境, 可以使用统一的一套代码。 如: 外卖点餐的支付功能: H5页面调用proxy.pay(), 在美团原 生应用中调用美团的支付模块, 在微信原生应用中调用微信的支付模块, 在微博原生应用 中调用微博的支付模块(如果微博也可以支付)。 对H5页面而言, 只是简单调用了一个函数 pay, 就能在不同运行环境下调。

26、用不同的支付模块完成支付。 0051 图1是本申请一个实施例的HTML5应用调用原生应用的方法的流程图, 参见图1, 本 实施例的HTML5应用调用原生应用的方法包括: 0052 步骤S101, 响应于所述HTML5应用的启动指令, 检测所述HTML5应用所处的原生应 用; 0053 步骤S102, 创建与所述原生应用匹配的适配器; 所述适配器是所述原生应用提供 的JS SDK对象的实例; 0054 步骤S103, 拦截所述HTML5应用调用预设的统一入口函数的调用指令, 并依据所述 调用指令调用所述适配器的第一函数, 通过所述适配器的第一函数调用所述JS SDK对象, 并通过所述JS SDK。

27、对象调用所述原生应用的功能; 其中, 所述第一函数是与所述调用指令 中的函数名称相同的函数。 0055 由图1所示可知, 本实施例的HTML5应用调用原生应用的方法, 响应于HTML5应用的 启动指令检测HTML5应用所处的原生应用, 创建与原生应用匹配的适配器, 当拦截HTML5应 用调用预设的统一入口函数的调用指令时, 调用适配器的第一函数, 通过第一函数调用JS SDK对象进而通过JS SDK对象调用原生应用的功能。 如此, 通过入口收敛和切面拦截, 对于 业务方而言, 只需要编写一套HTML5应用的业务代码, 在调用不同原生应用的某个函数时参 数都是统一的, 实现了代码的重用, 业务方。

28、不需要关注在哪一个原生应用环境中运行, 提高 说明书 4/10 页 7 CN 110704131 A 7 了开发效率, 而且也不需要在业务中手动埋入访问控制逻辑, 避免了对业务的侵入。 0056 如前述, H5页面与运行环境是一对多的关系, 运行环境与JSSDK是一对一的关系, 每个H5页面在运行环境下, 需要去适配对应环境的JSSDK, 才能调用对应运行环境的原生功 能。 本实施例引入了代理做入口收敛, 使得业务方在调用某个函数的时候输入参数和输出 参数都是统一的, 函数的名称也是统一的, 不需要去关心在哪一个运行环境中。 比如: 分享 方法, 对业务方使用统一的一套逻辑就可以处理完成, 更。

29、多的与运行环境相关的逻辑都由 代理统一处理。 0057 图2是本申请一个实施例的HTML5应用调用原生应用的方法的流程示意图; 参见图 2, HTML5应用调用原生应用的流程如下: 0058 HTML5应用, 调用预设的统一入口函数。 0059 代理, 集成有拦截方法, 用于拦截HTML5应用调用预设的统一入口函数的调用指 令, 并依据调用指令调用适配器的第一函数(即图2中所示的JSSDK代理方法), 通过适配器 的第一函数调用原生应用提供的JS SDK对象, 并通过JS SDK对象调用原生应用的功能。 0060 原生应用, 根据JS SDK对象的调用, 执行相应的功能并反馈调用结果。 006。

30、1 需要说明的是, 图2示意了三个原生应用, 分别是美团、 微信、 微博, 各原生应用都 提供有对应的JS SDK。 对于一个特定的应用场景而言, 运行H5页面的原生应用只有一个。 另 外, JS SDK对象调用原生应用的功能是现有技术, 不是本实施例的重点, 有关JS SDK对象调 用原生应用的功能可以参见现有技术的说明, 这里不再赘述。 0062 本实施例的HTML5应用内嵌代理, 代理响应于HTML5应用的启动指令, 检测HTML5应 用所处的原生应用; 即, 代理封装有相同的函数用于检测HTML5应用可适用的运行环境的逻 辑。 当H5页面在一个原生应用中启动时, 代理获取当前运行的原生。

31、应用的标识, 比如, 原生 应用是美团、 是微信还是微博等。 以原生应用是美团为例, 代理在检测出H5页面在美团中启 动之后, 根据原生应用(比如美团)提供的JS SDK对象, 创建与美团应用匹配的对象实例, 即 适配器。 0063 后续, 代理拦截HTML5应用调用预设的统一入口函数(这里是代理提供的一个入口 函数)的调用指令, 并依据调用指令调用适配器的第一函数, 通过适配器的第一函数调用JS SDK对象, 并通过JS SDK对象调用原生应用的功能; 第一函数是与调用指令中的函数名称相 同的函数。 0064 需要说明的是, 本实施例的适配器采用组合模式这种设计模式实现, 适配器是上 层的一。

32、个抽象类, 其中组合有具体运行环境的JSSDK的一个对象实例。 如, 美团适配器组合 包含了美团的JS SDK, 而不是直接指向JS SDK。 0065 由上可知, 本实施例将代理前置, 调用适配器的函数都是先通过代理处理通用逻 辑以后, 再调用到适配器的函数, 代理做入口收敛, 使得业务方在调用某个函数的时候输入 参数和输出参数都是统一的, 函数的名称也是统一的, 不需要去关心在哪一个运行环境中。 0066 举例而言, 不做入口收敛的调用方式: 说明书 5/10 页 8 CN 110704131 A 8 0067 0068 基于本实施例, 做了入口收敛后的调用方式: 0069 代理(prox。

33、y)对象-share( 0070 Content: “分享的内容” 0071 ) 0072 由此可知, 对业务方使用统一的一套逻辑就可以处理完成, 更多的与运行环境相 关的逻辑由代理统一处理。 0073 一个实施例中, 检测所述HTML5应用所处的原生应用包括: 获取浏览器信息; 其中 所述浏览器信息是启动所述HTML5应用的所述原生应用的内置浏览器的信息; 如果所述浏 览器信息中存在预设的关键词, 则将所述关键词指示的原生应用确定为所述HTML5应用所 处的原生应用。 0074 比如, 本实施例中使用运行环境的navigator.userAgent, 判断与对应运行环境相 同的特征关键字。 。

34、如: 微信是否存在micromessenger关键字, 美团是否存在meituan关键字。 通过关键字就能识别出对应的运行环境, 相应的就能创建或获取对应环境的适配器。 0075 一个实施例中, 创建与所述原生应用匹配的适配器包括: 依据所述原生应用提供 的JS SDK对象创建适配器, 并调用所述适配器的认证函数, 通过所述认证函数调用所述原 生应用的认证服务, 以对所述JS SDK对象进行安全性认证。 0076 由于一些原生应用对通过JS SDK对象来调用原生应用的功能设定了认证条件, 因 此, 本实施例中, 在依据原生应用提供的JS SDK对象创建适配器的过程中调用适配器的认 证函数, 通。

35、过认证函数调用原生应用的认证服务, 以对JS SDK对象进行安全性认证。 具体认 证由各JS SDK的适配器进行, 调用链路是: 代理proxy调用适配器的认证函数适配器认证 函数调用运行环境的认证服务(如: 微信JS SDK认证的后台服务), 这样, 拓宽了本申请实施 例的H5页面的应用范围。 0077 为了满足对函数调用情况的监控需求, 本实施例的HTML5应用调用原生应用的方 法还包括: 在依据所述调用指令调用所述适配器的第一函数之前, 监控调用所述第一函数 的调用请求, 获得调用请求监控数据; 以及, 在依据所述调用指令调用所述适配器的第一函 数后, 监控与所述第一函数对应的回调函数返。

36、回的调用结果, 获得调用结果监控数据; 将所 说明书 6/10 页 9 CN 110704131 A 9 述调用请求监控数据以及所述调用结果监控数据上报至监控平台, 以使所述监控平台对所 述调用请求监控数据以及所述调用结果监控数据中的异常信息进行汇总分析。 0078 通过代理将监控获得的调用请求数据和调用结果数据上报到监控平台, 监控平台 对监控数据中的异常情况进行汇总分析, 为后续调整函数调用, 修改H5页面提供了参考。 0079 实际应用中, H5页面不是每次都能成功调用原生应用的功能, 不成功的原因大致 有两种, 一种是原生应用本身不支持相应的功能, 另一种是原生应用支持相应的功能但调 。

37、用当时存在故障, 基于此, 本实施例提供了兜底H5页面, 以应对JS SDK对象不能成功调用原 生应用功能的状况。 0080 具体的, 该方法还包括: 判断所述JS SDK对象是否成功调用所述原生应用的功能; 如果未成功, 则通过所述适配器触发调用预设的HTML5页面; 其中, 所述预设的HTML5页面实 现的功能与所述原生应用的功能相同。 0081 比如, 原生应用的一个功能是支付功能, 当H5调用原生应用的支付功能时如果不 成功, 本实施例的适配器触发调用预设的HTML5页面; 预设的HTML5页面实现的也是支付功 能, 与原生应用的支付功能相同, 从而在H5调用原生应用的支付功能不成功时。

38、, 提供了备用 和兜底页面, 提高调用的成功率, 优化了用户体验。 0082 一个实施例中, 判断所述JS SDK对象是否成功调用所述原生应用的功能包括: 如 果所述JS SDK对象中不存在与所述第一函数对应的第二函数, 则确定所述JS SDK对象未成 功调用所述原生应用的功能; 或, 如果所述JS SDK对象中存在所述第二函数且所述第二函 数返回的调用结果为异常, 则确定所述JS SDK对象未成功调用所述原生应用的功能。 0083 也就是说, 本实施例中适配器判断JS SDK对象中是否存在与第一函数如pay()对 应的第二函数pay (), 如果JS SDK对象中不存在与第一函数对应的第二函。

39、数, 那么说明原 生应用不支持该函数功能。 或者, 在适配器判断JS SDK对象中存在第二函数, 但是第二函数 返回的调用结果为异常时, 那么也可以确定JS SDK对象未成功调用原生应用的功能。 0084 本实施例中提供了策略降级机制以提高H5页面调用原生应用的成功率, 满足实际 需求。 也就是说, 通过所述适配器的第一函数调用所述JS SDK对象, 并通过所述JS SDK对象 调用所述原生应用的功能还包括: 在将所述调用结果监控数据上报所述监控平台之前, 统 计所述调用结果的异常次数, 如果所述异常次数超过预设降级策略中的次数阈值, 则在拦 截到新的调用指令时, 触发调用预设的HTML5页面。

40、; 所述预设的HTML5页面实现的功能与所 述原生应用的功能相同。 0085 比如, 根据需求设定降级策略中的次数阈值为8次, 在每次收到调用结果监控数据 后对异常次数进行累计, 如果异常次数超过预设降级策略中的次数阈值, 比如, 累计的异常 次数为10, 大于8次, 那么在拦截到新的调用指令时, 触发调用预设的HTML5页面, 而不再继 续调用JS SDK对象。 这是因为, 根据历史数据可知调用JS SDK对象实现调用原生应用功能 的失败次数过多, 可能原生应用当前存在故障, 所以如果继续调用JS SDK对象很大概率仍 会失败, 本实施例进行降级, 在拦截到新的调用指令时, 直接触发调用预设。

41、的HTML5页面, 提 高了调用成功率。 0086 实际应用中, 为了节省功耗, 原生应用的JS SDK对象不是处于随时可用的状态, 因 此通过所述适配器的第一函数调用所述JS SDK对象, 并通过所述JS SDK对象调用所述原生 应用的功能包括: 如果所述原生应用中存在所述JS SDK对象, 则通过所述适配器的所述第 说明书 7/10 页 10 CN 110704131 A 10 一函数调用所述JS SDK对象; 如果所述原生应用中不存在所述JS SDK对象, 则通过所述适 配器控制加载所述JS SDK对象并关联所述JS SDK对象后, 通过所述适配器的第一函数调用 所述JS SDK对象。 。

42、也就是说, 根据原生应用中是否存在JS SDK对象的不同情况进行相应的 处理, 保证调用流程的顺畅。 0087 综上可知, 本申请实施例的HTML5应用调用原生应用的方法, 响应于HTML5应用的 启动指令, 检测HTML5应用所处的原生应用, 创建与原生应用匹配的适配器(适配器即原生 应用的JS SDK对象实例), 拦截HTML5应用调用预设的统一入口函数的调用指令, 并依据调 用指令调用适配器的第一函数, 通过第一函数调用JS SDK对象进而通过JS SDK对象调用原 生应用的功能, 如此, 通过入口收敛和切面拦截, 对于业务方而言, 只需要编写一套HTML5应 用的业务代码, 应对不同的。

43、原生应用, 实现了代码的重用, 业务方不需要关注HTML5应用在 哪一个原生应用环境中运行, 提高了开发效率, 而且也不需要在业务中手动埋入访问控制 逻辑, 避免了对业务的侵入。 0088 与前述HTML5应用调用原生应用的方法同属于一个技术构思, 本申请实施例还提 供了一种HTML5应用调用原生应用的装置。 图3是本申请一个实施例的HTML5应用调用原生 应用的装置的框图, 参见图3, 本实施例的HTML5应用调用原生应用的装置300应用于HTML5 应用, 包括代理模块301, 0089 所述代理模块301, 响应于所述HTML5应用的启动指令, 检测所述HTML5应用所处的 原生应用; 。

44、0090 所述代理模块301, 创建与所述原生应用匹配的适配器; 所述适配器是所述原生应 用提供的JS SDK对象的实例; 0091 所述代理模块301, 在拦截到所述HTML5应用调用所述代理模块预设的统一入口函 数的调用指令时, 调用所述适配器中的第一函数, 以通过所述第一函数调用所述JS SDK对 象, 并通过所述JS SDK对象调用所述原生应用的功能。 0092 在本申请的一个实施例中, 所述代理模块301, 获取浏览器信息; 其中所述浏览器 信息是启动所述HTML5应用的所述原生应用的内置浏览器的信息; 0093 如果所述浏览器信息中存在预设的关键词, 则将所述关键词指示的原生应用确。

45、定 为所述HTML5应用所处的原生应用。 0094 在本申请的一个实施例中, 所述代理模块301, 依据所述原生应用提供的JS SDK对 象创建适配器, 并调用所述适配器的认证函数, 通过所述认证函数调用所述原生应用的认 证服务, 以对所述JS SDK对象进行安全性认证。 0095 在本申请的一个实施例中, 所述代理模块301, 还用于: 在依据所述调用指令调用 所述适配器的第一函数之前, 监控调用所述第一函数的调用请求, 获得调用请求监控数据; 以及, 在依据所述调用指令调用所述适配器的第一函数后, 监控与所述第一函数对应的回 调函数返回的调用结果, 获得调用结果监控数据; 将所述调用请求监。

46、控数据以及所述调用 结果监控数据上报至监控平台, 以使所述监控平台对所述调用请求监控数据以及所述调用 结果监控数据中的异常信息进行汇总分析。 0096 在本申请的一个实施例中, 所述代理模块301, 还用于判断所述JS SDK对象是否成 功调用所述原生应用的功能; 如果未成功, 则通过所述适配器触发调用预设的HTML5页面; 其中, 所述预设的HTML5页面实现的功能与所述原生应用的功能相同。 说明书 8/10 页 11 CN 110704131 A 11 0097 在本申请的一个实施例中, 所述代理模块301, 具体用于如果所述JS SDK对象中不 存在与所述第一函数对应的第二函数, 则确定。

47、所述JS SDK对象未成功调用所述原生应用的 功能; 或, 如果所述JS SDK对象中存在所述第二函数且所述第二函数返回的调用结果为异 常, 则确定所述JS SDK对象未成功调用所述原生应用的功能。 0098 在本申请的一个实施例中, 所述代理模块301, 在将所述调用结果监控数据上报所 述监控平台之前, 统计所述调用结果的异常次数, 如果所述异常次数超过预设降级策略中 的次数阈值, 则在拦截到新的调用指令时, 触发调用预设的HTML5页面; 所述预设的HTML5页 面实现的功能与所述原生应用的功能相同。 0099 在本申请的一个实施例中, 所述代理模块301, 具体用于如果所述原生应用中存在。

48、 所述JS SDK对象, 则通过所述适配器的所述第一函数调用所述JS SDK对象; 如果所述原生 应用中不存在所述JS SDK对象, 则通过所述适配器控制加载所述JS SDK对象并关联所述JS SDK对象后, 通过所述适配器的第一函数调用所述JS SDK对象。 0100 关于图3所示装置中的代理模块所执行的各个功能的举例解释说明, 与前述方法 实施例中的举例解释说明一致, 这里不再一一赘述。 0101 需要说明的是: 0102 在此提供的算法和显示不与任何特定计算机、 虚拟装置或者其它设备固有相关。 各种通用装置也可以与基于在此的示教一起使用。 根据上面的描述, 构造这类装置所要求 的结构是显。

49、而易见的。 此外, 本申请实施例也不针对任何特定编程语言。 应当明白, 可以利 用各种编程语言实现在此描述的本申请实施例的内容, 并且上面对特定语言所做的描述是 为了披露本申请实施例的最佳实施方式。 0103 在此处所提供的说明书中, 说明了大量具体细节。 然而, 能够理解, 本申请的实施 例可以在没有这些具体细节的情况下实践。 在一些实例中, 并未详细示出公知的方法、 结构 和技术, 以便不模糊对本说明书的理解。 0104 类似地, 应当理解, 为了精简本申请并帮助理解各个申请方面中的一个或多个, 在 上面对本申请的示例性实施例的描述中, 本申请实施例的各个特征有时被一起分组到单个 实施例、。

50、 图、 或者对其的描述中。 然而, 并不应将该公开的方法解释成反映如下意图: 即所要 求保护的本申请实施例要求比在每个权利要求中所明确记载的特征更多的特征。 更确切地 说, 如下面的权利要求书所反映的那样, 申请方面在于少于前面公开的单个实施例的所有 特征。 因此, 遵循具体实施方式的权利要求书由此明确地并入该具体实施方式, 其中每个权 利要求本身都作为本申请的单独实施例。 0105 本领域那些技术人员可以理解, 可以对实施例中的设备中的模块进行自适应性地 改变并且把它们设置在与该实施例不同的一个或多个设备中。 可以把实施例中的模块或单 元或组件组合成一个模块或单元或组件, 以及此外可以把它们。

展开阅读全文
内容关键字: HTML5 应用 调用 原生 方法 装置
关于本文
本文标题:HTML5应用调用原生应用的方法和装置.pdf
链接地址:https://www.zhuanlichaxun.net/pdf/10978090.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1