CN110502708A - 基于JSBridge进行通信的方法、装置及存储介质 - Google Patents
基于JSBridge进行通信的方法、装置及存储介质 Download PDFInfo
- Publication number
- CN110502708A CN110502708A CN201910797901.0A CN201910797901A CN110502708A CN 110502708 A CN110502708 A CN 110502708A CN 201910797901 A CN201910797901 A CN 201910797901A CN 110502708 A CN110502708 A CN 110502708A
- Authority
- CN
- China
- Prior art keywords
- jsbridge
- parameter information
- primary layer
- web layers
- javascript file
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
- G06F16/972—Access to data in other repository systems, e.g. legacy data or dynamic Web page generation
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本公开是关于一种基于JSBridge进行通信的方法、装置及存储介质,属于计算机技术领域。方法包括:通过原生层加载网页的过程中,获取网页的加载进度,当加载进度达到预设阈值时,加载包含用于生成JSBridge的预设方法的Javascript文件,当Javascript文件加载成功时,确定已经通过调用该预设方法创建JSBridge,则原生层与Web层能够基于创建的JSBridge进行通信。本公开能够提前创建JSBridge,保证了原生层与Web层能够提前基于创建的JSBridge进行通信,提高了操作效率。并且,通过加载Javascript文件的方式来创建JSBridge,降低了实现成本。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种基于JSBridge进行通信的方法、装置及存储介质。
背景技术
混合模式的应用客户端兼具原生功能和网页功能,目前已得到了广泛应用。混合模式的应用客户端包括原生层和Web(万维网)层,由于Web层的权限受到限制,需要与原生层进行通信,才能委托原生层来实现某些功能。因此原生层与Web层之间需要创建一个JSBridge(桥梁),基于JSBridge实现两者的通信。
Web层所提供的第一网页中添加不可见的iframe(内联框架)元素,在iframe元素中设置第二网页的URL(Uniform Resource Locator,统一资源定位符),URL中包含该第二网页的地址信息。当用户点击第一网页中的该URL时,需要加载该URL对应的第二网页,如果该URL满足原生层预先设置的规则,原生层会拦截该URL,对该地址信息进行解析,得到地址信息中包含的参数信息,再根据该参数信息进行后续处理,实现了原生层与Web层之间的通信。
但是,上述方案需要在添加iframe元素且在iframe元素中设置相应的URL之后才能实现,实现成本较高,操作效率低下。
发明内容
本公开提供了一种基于JSBridge进行通信的方法、装置及存储介质,能够克服相关技术中存在的实现成本较高,操作效率低下的问题。
根据本公开实施例的第一方面,提供一种基于JSBridge进行通信的方法,所述方法包括:
通过原生层加载网页的过程中,获取所述网页的加载进度;
当所述加载进度达到预设阈值时加载脚本Javascript文件,所述Javascript文件中包含用于生成JSBridge的预设方法;
当所述Javascript文件加载成功时,确定已创建JSBridge;
所述原生层与Web层基于所述JSBridge进行通信。
在一种可能实现方式中,所述当所述加载进度达到预设阈值时加载脚本Javascript文件,包括:
当所述加载进度达到所述预设阈值时启动指定线程,通过所述指定线程加载所述Javascript文件;
所述方法还包括:当所述Javascript文件加载成功时,停止所述指定线程。
在另一种可能实现方式中,所述原生层与Web层基于所述JSBridge进行通信之前,所述方法还包括:
所述Web层调用所述JSBridge向所述原生层发送Ready事件,如果所述Ready事件发送成功,则确定所述JSBridge创建成功。
在另一种可能实现方式中,所述原生层与Web层基于所述JSBridge进行通信,包括:
所述Web层基于所述JSBridge向所述预设方法传入参数信息,调用所述预设方法;
所述原生层中的所述预设方法接受所述Web层的调用,根据所述参数信息进行处理,得到处理结果;
调用回调函数,向所述Web层发送所述处理结果。
在另一种可能实现方式中,所述根据所述参数信息进行处理,得到处理结果,包括以下至少一项:
所述参数信息包括网页标识,如果预设的白名单中包括所述网页标识,则根据所述参数信息进行处理,得到所述处理结果;
所述参数信息包括所述预设方法的方法名称,如果预设的白名单中包括所述方法名称,则根据所述参数信息进行处理,得到所述处理结果;
所述参数信息包括所述预设方法的方法名称,如果根据所述方法名称检测到所述预设方法已注册,则根据所述参数信息进行处理,得到所述处理结果。
在另一种可能实现方式中,所述根据所述参数信息进行处理,得到处理结果,包括:
调用系统层提供的第一预设函数,对所述参数信息进行处理,得到第一处理结果;
调用所述原生层与所述Web层所属应用客户端提供的第二预设函数,对所述参数信息进行处理,得到第二处理结果。
根据本公开实施例的第二方面,一种基于JSBridge进行通信的装置,所述装置包括:
进度获取单元,被配置为通过原生层加载网页的过程中,获取所述网页的加载进度;
文件加载单元,被配置为当所述加载进度达到预设阈值时加载脚本Javascript文件,所述Javascript文件中包含用于生成JSBridge的预设方法;
第一确定单元,被配置为当所述Javascript文件加载成功时,确定已创建JSBridge;
通信单元,被配置为所述原生层与Web层基于所述JSBridge进行通信。
在一种可能实现方式中,所述文件加载单元,包括:
线程启动子单元,被配置为当所述加载进度达到所述预设阈值时启动指定线程,通过所述指定线程加载所述Javascript文件;
线程停止子单元,被配置为当所述Javascript文件加载成功时,停止所述指定线程。
在另一种可能实现方式中,所述装置还包括:
第二确定单元,被配置为所述Web层调用所述JSBridge向所述原生层发送Ready事件,如果所述Ready事件发送成功,则确定所述JSBridge创建成功。
在另一种可能实现方式中,所述通信单元,包括:
调用子单元,被配置为所述Web层基于所述JSBridge向所述预设方法传入参数信息,调用所述预设方法;
处理子单元,被配置为所述原生层中的所述预设方法接受所述Web层的调用,根据所述参数信息进行处理,得到处理结果;
发送子单元,被配置为调用回调函数,向所述Web层发送所述处理结果。
在另一种可能实现方式中,所述处理子单元被配置为执行以下至少一项:
所述参数信息包括网页标识,如果预设的白名单中包括所述网页标识,则根据所述参数信息进行处理,得到所述处理结果;
所述参数信息包括所述预设方法的方法名称,如果预设的白名单中包括所述方法名称,则根据所述参数信息进行处理,得到所述处理结果;
所述参数信息包括所述预设方法的方法名称,如果根据所述方法名称检测到所述预设方法已注册,则根据所述参数信息进行处理,得到所述处理结果。
在另一种可能实现方式中,
所述处理子单元,被配置为:
调用系统层提供的第一预设函数,对所述参数信息进行处理,得到第一处理结果;
调用所述原生层与所述Web层所属应用客户端提供的第二预设函数,对所述参数信息进行处理,得到第二处理结果。
根据本公开实施例的第三方面,提供了一种计算机设备,所述计算机设备包括:
一个或多个处理器;
用于存储所述一个或多个处理器可执行命令的易失性或非易失性存储器;
其中,所述一个或多个处理器被配置为执行第一方面所述的基于JSBridge进行通信的方法。
根据本公开实施例的第四方面,提供一种非临时性计算机可读存储介质,当所述存储介质中的指令由计算机设备的处理器执行时,使得计算机设备能够执行第一方面所述的基于JSBridge进行通信的方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,当所述计算机程序产品中的指令由计算机设备的处理器执行时,使得计算机设备能够执行第一方面所述的基于JSBridge进行通信的方法。
本公开实施例提供的方法、装置及存储介质,通过原生层加载网页的过程中,获取网页的加载进度,当加载进度达到预设阈值时加载Javascript文件,Javascript文件中包含用于生成JSBridge的预设方法,当Javascript文件加载成功时,确定已经通过调用该预设方法创建JSBridge,则原生层与Web层能够基于创建的JSBridge进行通信。与加载网页之后再加载Javascript文件相比,本公开实施例中提前加载Javascript文件的方式,能够提前注入预设方法,从而提前创建JSBridge,保证了原生层与Web层能够提前基于创建的JSBridge进行通信,提高了操作效率。并且,通过加载Javascript文件的方式来创建JSBridge,无需采用相关技术中添加iframe元素且在iframe元素中设置相应的URL的方式,降低了实现成本。
并且,在通信过程中,对Web层传入的参数信息进行安全校验,提高了安全性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的一种基于JSBridge进行通信的方法的流程图。
图2是根据一示例性实施例示出的一种基于JSBridge进行通信的方法的流程图。
图3是根据一示例性实施例示出的一种Webview初始化的流程图。
图4是根据一示例性实施例示出的另一种基于JSBridge进行通信的方法的流程图。
图5是根据一示例性实施例示出的一种操作流程示意图。
图6是根据一示例性实施例示出的一种基于JSBridge进行通信的装置的框图。
图7是根据一示例性实施例示出的一种基于JSBridge进行通信的装置的框图。
图8是根据一示例性实施例示出的一种基于JSBridge进行通信的终端的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的设备和方法的例子。
图1是根据一示例性实施例示出的一种基于JSBridge进行通信的方法的流程图,该方法应用于计算机设备,如图1所示,该方法包括以下步骤:
101、通过原生层加载网页的过程中,获取网页的加载进度。
102、当加载进度达到预设阈值时加载Javascript(脚本)文件,Javascript文件中包含用于生成JSBridge的预设方法。
103、当Javascript文件加载成功时,确定已创建JSBridge。
104、原生层与Web层基于JSBridge进行通信。
本公开实施例提供的方法,通过原生层加载网页的过程中,获取网页的加载进度,当加载进度达到预设阈值时加载Javascript文件,Javascript文件中包含用于生成JSBridge的预设方法,当Javascript文件加载成功时,确定已经通过调用该预设方法创建JSBridge,则原生层与Web层能够基于创建的JSBridge进行通信。与加载网页之后再加载Javascript文件相比,本公开实施例中提前加载Javascript文件的方式,能够提前注入预设方法,从而提前创建JSBridge,保证了原生层与Web层能够提前基于创建的JSBridge进行通信,提高了操作效率。并且,通过加载Javascript文件的方式来创建JSBridge,无需采用相关技术中添加iframe元素且在iframe元素中设置相应的URL的方式,降低了实现成本。
在一种可能实现方式中,当加载进度达到预设阈值时加载Javascript文件,包括:
当加载进度达到预设阈值时启动指定线程,通过指定线程加载Javascript文件;
该方法还包括:当Javascript文件加载成功时,停止指定线程。
在另一种可能实现方式中,原生层与Web层基于JSBridge进行通信之前,该方法还包括:
Web层调用JSBridge向原生层发送Ready事件,如果Ready事件发送成功,则确定JSBridge创建成功。
在另一种可能实现方式中,原生层与Web层基于JSBridge进行通信,包括:
Web层基于JSBridge向预设方法传入参数信息,调用预设方法;
原生层中的预设方法接受Web层的调用,根据参数信息进行处理,得到处理结果;
调用回调函数,向Web层发送处理结果。
在另一种可能实现方式中,根据参数信息进行处理,得到处理结果,包括以下至少一项:
参数信息包括网页标识,如果预设的白名单中包括网页标识,则根据参数信息进行处理,得到处理结果;
参数信息包括预设方法的方法名称,如果预设的白名单中包括方法名称,则根据参数信息进行处理,得到处理结果;
参数信息包括预设方法的方法名称,如果根据方法名称检测到预设方法已注册,则根据参数信息进行处理,得到处理结果。
在另一种可能实现方式中,根据参数信息进行处理,得到处理结果,包括:
调用系统层提供的第一预设函数,对参数信息进行处理,得到第一处理结果;
调用原生层与Web层所属应用客户端提供的第二预设函数,对参数信息进行处理,得到第二处理结果。
图2是根据一示例性实施例示出的一种基于JSBridge进行通信的方法的流程图,该方法应用于计算机设备,该计算机设备可以为手机、计算机、平板电脑等多种设备,如图2所示,该方法包括以下步骤:
201、通过原生层加载网页的过程中,获取网页的加载进度。
本公开实施例应用于应用客户端中,该应用客户端为混合模式的应用客户端,包括原生层和Web层。其中原生层用于运行原生页面,可以调用系统层API(ApplicationProgramming Interface,应用程序编程接口),从而实现操作系统提供的相应功能。而Web层用于运行Web页面,如H5(Hyper Text Markup Language 5,超文本标记语言第5代)页面等。
原生层中内嵌有Webview(网页视图),Webview用于在应用客户端中加载网页,展示加载后的网页内容,而Web层中运行JavaScript,JavaScript的权限受到限制,无法实现某些系统功能,如获取计算机设备的文件、获取显示屏幕尺寸、获取设备状态等功能。而Webview与JavaScript可以相互调用,从而实现原生层与Web层之间的通信,JavaScript通过调用Webview提供的接口,能够委托Webview实现系统功能。
首先,原生层在加载网页之前,需要将Webview进行初始化后加载网页。图3为Webview初始化的流程图,如图3所示,Webview的初始化过程包括以下步骤:
2011、应用客户端传入启动参数,打开WebViewActivity(网页视图容器)。
2012、创建WebView,设置要加载的页面。
WebViewActivity中包括onCreate函数,通过调用onCreate函数创建WebView。此时,将指定要加载的页面传入com.kwai.yoda.YodaWebView或继承YodaWebView。
例如,设置layout.xml文件,layout.xml文件中配置com.kwai.yoda.YodaWebview或继承YodaWebview。则通过调用setContent,将指定要加载的页面传入到layout.xml文件中。
2013、com.kwai.yoda.YodaWebView或继承YodaWebView构建时调用initJavascriptInterface。
2014、initJavascriptInterface初始化JavascriptInterface,添加默认的系统函数。
2015、执行WebView中的setWebChromeClient和setWebViewClient函数,WebChromeClient和WebViewClient用于进度回调。
完成初始化之后,加载网页的过程包括:
2016、WebViewActivity控制Webview加载指定URL,以指示加载该指定URL对应的网页。Webview根据该指定URL加载该网页。
YodaWebview中包括loadUrl函数,通过调用loadUrl函数可以加载指定URL。
2017、加载网页的过程中,获取网页的加载进度。
WebChromeClient中包括onProgressChanged函数,通过调用onProgressChanged函数,能够获取到网页当前的加载进度。如该加载进度为10%、50%等。
202、当加载进度达到预设阈值时启动指定线程,通过指定线程加载Javascript文件,Javascript文件中包含用于生成JSBridge的预设方法。
当网页的加载进度达到预设阈值时加载Javascript文件。其中,该预设阈值可以为10%、20%等数值,具体可以根据需求确定。
Webview提供addJavascriptInterface方法,用于在Javascript中注入Java对象,以便Web层调用原生层中的方法。在安卓的早期版本中,addJavascriptInterface方法存在安全漏洞,Javascript能够反射访问注入对象,从而实现某些系统功能。而在安卓4.2及以后的版本中修复了该问题,在注入的对象的java方法前加上@JavascriptInterface注解,才能被Javascript调用,从而提高了安全性。
本公开实施例中,将addJavascriptInterface方法作为原生层和Web层交互的基础,Javascript文件可以包括多个对象,通过加载Javascript文件能够将该多个对象注入到网页中。其中,Javascript文件中包含用于生成JSBridge的预设方法,将该预设方法注入到网页中,通过调用该预设方法即可生成JSBridge。该预设方法可以为invoke('system','yodaInjectFinished',”,”)等,该方法可以位于Javascript文件中的最后,用于创建JSBridge时进行调用。
在一种可能实现方式中,当加载进度达到预设阈值时启动指定线程,通过指定线程加载Javascript文件。该指定线程可以包括一个线程或者多个线程。
因此,在加载网页的过程中,获取网页的加载进度,将获取到的加载进度与预设阈值进行比较,当获取到的加载进度达到预设阈值时,开始启动指定线程,通过指定线程加载Javascript文件。
203、当Javascript文件加载成功时,确定已创建JSBridge,停止指定线程。
由于Javascript文件的加载过程中,会调用该预设方法,因此当Javascript文件加载成功时,可以确定已经调用该预设方法完成,已经创建JSBridge。
在一种可能实现方式中,如果是通过指定线程来加载Javascript文件,当Javascript文件加载成功时,即可停止该指定线程。例如,通过调用setInjected(true),停止该指定线程。
在另一种可能实现方式中,Javascript文件是否加载成功,可以根据Javascript文件的加载进度确定。
例如,预先设置另一预设阈值,当网页的加载进度达到该另一预设阈值时,确定Javascript文件加载成功,该另一预设阈值可以为50%、70%等不小于50%的数值,具体可以根据需求确定,且该另一预设阈值大于用于指示加载Javascript文件的预设阈值。
因此,在加载网页的过程中,获取网页的加载进度,将获取到的加载进度与该另一预设阈值进行比较,当获取到的加载进度达到该另一预设阈值时,确定Javascript文件加载成功。
204、Web层调用JSBridge向原生层发送Ready事件,如果Ready事件发送成功,则确定JSBridge创建成功。
在加载Javascript文件的同时,Web层会不断探测JSBridge的能力,以检测Web层与原生层之间是否能够进行通信。为此,Web层可以向原生层发送预设事件,通过该预设事件是否发送成功来确定JSBridge的创建情况,当预设事件发送成功时,确定已创建Bridge。
在一种可能实现方式中,Web层调用JSBridge向原生层发送Ready(准备)事件,如果Ready事件发送成功,表示JSBridge创建成功,Web层与原生层之间能够通过创建的JSBridge进行通信,能够在原生层展示Web提供的网页。而如果Ready事件未发送成功,表示JSBridge还未创建成功,Web层与原生层之间不能通过创建的JSBridge进行通信。
而对于原生层来说,JSBridge创建成功后的运行过程中会注入WebViewJavascriptBridge对象,在使用之前需要判断WebViewJavascriptBridge对象是否存在。如果WebViewJavascriptBridge对象不存在,原生层可以监听Ready事件。
205、原生层与Web层基于JSBridge进行通信。
创建JSBridge后,原生层与Web层即可通过JSBridge互相进行调用,并将调用结果进行回调,实现原生层与Web层基于JSBridge的通信。通信过程在下一实施例中进行介绍,在此暂不做说明。
本公开实施例提供的方法,通过原生层加载网页的过程中,获取网页的加载进度,当加载进度达到预设阈值时加载Javascript文件,Javascript文件中包含用于生成JSBridge的预设方法,当Javascript文件加载成功时,确定已经通过调用该预设方法创建JSBridge,则原生层与Web层能够基于创建的JSBridge进行通信。与加载网页之后再加载Javascript文件相比,本公开实施例中提前加载Javascript文件的方式,能够提前注入预设方法,从而提前创建JSBridge,保证了原生层与Web层能够提前基于创建的JSBridge进行通信,提高了操作效率。并且,通过加载Javascript文件的方式来创建JSBridge,无需采用相关技术中添加iframe元素且在iframe元素中设置相应的URL的方式,降低了实现成本。
图4是根据一示例性实施例示出的另一种基于JSBridge进行通信的方法的流程图,该方法应用于计算机设备,如图4所示,该方法包括以下步骤:
401、Web层基于JSBridge向预设方法传入参数信息,调用预设方法。
其中,参数信息包括:命名空间(NameSpace)、方法名称(cmd)、方法参数(params)以及回调函数(callback)等。其中,方法名称位于命名空间中;方法参数可以包括一个或多个参数,且方法参数中的参数数量可变,在方法参数包括多个参数的情况下,该多个参考的类型相同;回调函数用于后续调用过程中将处理结果进行回调。
另外,预设方法在Webview加载的Javascript文件中,通过加载Javascript文件的方式已经将该预设方法注入到网页中。Web层可以基于JSBridge调用该预设方法。
402、原生层中的预设方法接受Web层的调用,根据参数信息进行处理,得到处理结果。
在一种可能实现方式中,在处理之前,原生层还会进行安全校验,校验方式可以包括以下几种:
4021、参数信息包括网页标识,如果预设的白名单中包括网页标识,则根据参数信息进行处理,得到处理结果。
预设的白名单可以在应用客户端启动时由服务器下发给应用客户端,或者由应用客户端默认设置。该白名单用于检测网页是否合法,该白名单中可以包括合法网页的网页标识,而该参数信息包括待展示网页的网页标识,因此判断该白名单中是否包括该网页标识。
如果该白名单中包括该网页标识,表示该网页标识合法,则继续执行后续处理步骤。而如果该白名单中不包括该网页标识,表示该网页标识不合法,则不再执行后续处理步骤。此时可以调用参数信息中的回调函数,将本地的日志数据上报给Web层,以便通知Web层出现错误。
其中,网页标识可以为网页的域名或者网页的其他参数信息。
其中,该日志数据可以包括用于表示网页标识不合法的错误代码和错误说明,以便Web层根据该日志数据能够获知错误原因。
4022、参数信息包括预设方法的方法名称,如果预设的白名单中包括方法名称,则根据参数信息进行处理,得到处理结果。
预设的白名单可以在应用客户端启动时由服务器下发给应用客户端,或者由应用客户端默认设置。该白名单用于检测被调用的方法是否合法,该白名单中可以包括合法方法的方法名称,而该参数信息包括预设方法的方法名称,因此判断该白名单中是否包括该方法名称。
如果该白名单中包括该方法名称,表示该预设方法合法,则继续执行后续处理步骤。而如果该白名单中不包括该方法名称,表示该预设方法不合法,则不再执行后续处理步骤。此时可以调用参数信息中的回调函数,将本地的日志数据上报给Web层,以便通知Web层出现错误。
其中,该日志数据可以包括用于表示被调用方法不合法的错误代码和错误说明,以便Web层根据该日志数据能够获知错误原因。
4023、参数信息包括预设方法的方法名称,如果根据方法名称检测到预设方法已注册,则根据参数信息进行处理,得到处理结果。
原生层根据预设方法的方法名称,检测预设方法是否已注册。例如,注册列表中包括已注册方法的方法名称,原生层检测注册列表中是否包括预设方法的方法名称。如果该注册列表中包括该方法名称,表示该预设方法已注册,则继续执行后续处理步骤。而如果该注册列表中不包括该方法名称,表示该预设方法未注册,则不再执行后续处理步骤。此时可以调用参数信息中的回调函数,将本地的日志数据上报给Web层,以便通知Web层出现错误。
其中,该日志数据可以包括用于表示被调用方法未注册的错误代码和错误说明,以便Web层根据该日志数据能够获知错误原因。
需要说明的是,上述安全校验方式中的任意多种可以结合,或者还可以采用其他的安全校验方式。原生层可以创建SecurityPolicyChecker实例,用于进行安全校验。SecurityPolicyChecker实例设置有安全校验策略,能够根据当前加载的网页地址和参数信息,按照该安全校验策略进行安全校验。
在另一种可能实现方式中,预设方法包括两种函数,一种是系统层提供的函数,另一种是应用客户端提供的函数,这两种函数均可实现对应的功能。因此,根据参数信息进行处理,得到处理结果,包括:调用系统层提供的第一预设函数,对参数信息进行处理,得到第一处理结果,调用原生层与Web层所属应用客户端提供的第二预设函数,对参数信息进行处理,得到第二处理结果。
其中,在进行处理时,可以按照先后顺序,先调用系统层提供的第一预设函数,再调用应用客户端提供的第二预设函数。
并且,对于应用客户端来说,该应用客户端可以根据需求设置多个第二预设函数,从而能够在调用预设方法时,调用多个第二预设函数,体现了功能的扩展性,相当于给业务提供方提供了扩展功能的能力,由业务提供方通过注入函数的方式,来注入所需的桥能力和实现逻辑,达到扩展桥能力的目的。
403、调用回调函数,向Web层发送处理结果。
参数信息中包括回调函数,在得到处理结果之后,原生层即可调用参数信息中的回调函数,将得到的处理结果发送给Web层。
在一种可能实现方式中,原生层默认注册callHandler方法,得到处理结果之后,调用callHandler方法,向Web层发送处理结果。
或者,Webview包括loadUrl方法,通过调用loadUrl方法,可以向Web层发送处理结果。或者,Webview包括evaluateJavascript方法,通过调用evaluateJavascript方法,可以向Web层发送处理结果。或者,还可以采用evaluateJavascript方法和loadUrl方法相结合的方式,向Web层发送处理结果。
其中,调用loadUrl方法的方式无法获得Web层的返回值,而在按照4.4及以上的版本中,通过调用evaluateJavascript方法可以获得Web层的返回值。
通常我们会通过WebView的loadUrl("java:")的方式去调用JS方法,但这种方式无法得到JS方法的返回值。
或者,原生层获得YodaWebView对象,得到YodaJavascriptBridge,调用YodaJavascriptBridge,向Web层发送处理结果。
在另一种可能实现方式中,原生层通过调用第一预设函数得到第一处理结果,通过调用第二预设函数得到第二处理结果的情况下,可以调用回调函数,向Web层发送第一处理结果和第二处理结果。
图5是本公开实施例的一种操作流程示意图,如图5所示,Javascript向JSBridge传入NameSpace、cmd、params、callback等参数信息,调用invoke方法,WebView中的invoke方法接受调用,再调用SecurityPolicyChecker实例,进行安全校验,安全校验通过后对参数信息进行处理,通过调用回调函数,将处理结果返回给Javascript。
本公开实施例提供的方法,Web层基于JSBridge向预设方法传入参数信息,调用预设方法,原生层中的预设方法接受Web层的调用,根据参数信息进行处理,得到处理结果,调用回调函数,向Web层发送处理结果,实现了原生层与Web层之间基于JSBridge进行通信的方法。并且,在通信过程中,对Web层传入的参数信息进行安全校验,提高了安全性。
图6是根据一示例性实施例示出的一种基于JSBridge进行通信的装置的框图。参见图6,该装置包括:
进度获取单元601,被配置为通过原生层加载网页的过程中,获取网页的加载进度;
文件加载单元602,被配置为当加载进度达到预设阈值时加载Javascript文件,Javascript文件中包含用于生成JSBridge的预设方法;
第一确定单元603,被配置为当Javascript文件加载成功时,确定已创建JSBridge;
通信单元604,被配置为原生层与Web层基于JSBridge进行通信。
在一种可能实现方式中,参见图7,文件加载单元602包括:
线程启动子单元6021,被配置为当加载进度达到预设阈值时启动指定线程,通过指定线程加载Javascript文件;
线程停止子单元6022,被配置为当Javascript文件加载成功时,停止指定线程。
在另一种可能实现方式中,装置还包括:
第二确定单元605,被配置为Web层调用JSBridge向原生层发送Ready事件,如果Ready事件发送成功,则确定JSBridge创建成功。
在另一种可能实现方式中,通信单元604包括:
调用子单元6041,被配置为Web层基于JSBridge向预设方法传入参数信息,调用预设方法;
处理子单元6042,被配置为原生层中的预设方法接受Web层的调用,根据参数信息进行处理,得到处理结果;
发送子单元6043,被配置为调用回调函数,向Web层发送处理结果。
在另一种可能实现方式中,处理子单元被配置为执行以下至少一项:
参数信息包括网页标识,如果预设的白名单中包括网页标识,则根据参数信息进行处理,得到处理结果;
参数信息包括预设方法的方法名称,如果预设的白名单中包括方法名称,则根据参数信息进行处理,得到处理结果;
参数信息包括预设方法的方法名称,如果根据方法名称检测到预设方法已注册,则根据参数信息进行处理,得到处理结果。
在另一种可能实现方式中,处理子单元,被配置为:
调用系统层提供的第一预设函数,对参数信息进行处理,得到第一处理结果;
调用原生层与Web层所属应用客户端提供的第二预设函数,对参数信息进行处理,得到第二处理结果。
关于上述实施例中的装置,其中各个单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图8是根据一示例性实施例示出的一种基于JSBridge进行通信的终端800的框图。该终端800用于执行上述基于JSBridge进行通信的方法中终端所执行的步骤,可以是便携式移动终端,比如:智能手机、平板电脑、MP3播放器(Moving Picture Experts GroupAudio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture ExpertsGroup Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端800还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端800包括有:一个或多个处理器801和一个或多个存储器802。
处理器801可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器801可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器801也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器801可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器801还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器802可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器802还可包括易失性存储器或非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器802中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器801所具有以实现本申请中方法实施例提供的基于JSBridge进行通信的方法。
在一些实施例中,终端800还可选包括有:外围设备接口803和至少一个外围设备。处理器801、存储器802和外围设备接口803之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口803相连。具体地,外围设备包括:射频电路804、触摸显示屏805、摄像头806、音频电路807、定位组件808和电源809中的至少一种。
外围设备接口803可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器801和存储器802。在一些实施例中,处理器801、存储器802和外围设备接口803被集成在同一芯片或电路板上;在一些其他实施例中,处理器801、存储器802和外围设备接口803中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路804用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路804通过电磁信号与通信网络以及其他通信设备进行通信。射频电路804将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路804包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路804可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及13G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路804还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏805用于显示UI(UserInterface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏805是触摸显示屏时,显示屏805还具有采集在显示屏805的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器801进行处理。此时,显示屏805还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏805可以为一个,设置终端800的前面板;在另一些实施例中,显示屏805可以为至少两个,分别设置在终端800的不同表面或呈折叠设计;在再一些实施例中,显示屏805可以是柔性显示屏,设置在终端800的弯曲表面上或折叠面上。甚至,显示屏805还可以设置成非矩形的不规则图形,也即异形屏。显示屏805可以采用LCD(LiquidCrystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件806用于采集图像或视频。可选地,摄像头组件806包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件806还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路807可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器801进行处理,或者输入至射频电路804以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端800的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器801或射频电路804的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路807还可以包括耳机插孔。
定位组件808用于定位终端800的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件808可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。
电源809用于为终端800中的各个组件进行供电。电源809可以是交流电、直流电、一次性电池或可充电电池。当电源809包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端800还包括有一个或多个传感器810。该一个或多个传感器810包括但不限于:加速度传感器811、陀螺仪传感器812、压力传感器813、指纹传感器814、光学传感器815以及接近传感器816。
加速度传感器811可以检测以终端800建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器811可以用于检测重力加速度在三个坐标轴上的分量。处理器801可以根据加速度传感器811采集的重力加速度信号,控制触摸显示屏805以横向视图或纵向视图进行用户界面的显示。加速度传感器811还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器812可以检测终端800的机体方向及转动角度,陀螺仪传感器812可以与加速度传感器811协同采集用户对终端800的3D动作。处理器801根据陀螺仪传感器812采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器813可以设置在终端800的侧边框和/或触摸显示屏805的下层。当压力传感器813设置在终端800的侧边框时,可以检测用户对终端800的握持信号,由处理器801根据压力传感器813采集的握持信号进行左右手识别或快捷操作。当压力传感器813设置在触摸显示屏805的下层时,由处理器801根据用户对触摸显示屏805的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器814用于采集用户的指纹,由处理器801根据指纹传感器814采集到的指纹识别用户的身份,或者,由指纹传感器814根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器801授权该用户具有相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器814可以被设置终端800的正面、背面或侧面。当终端800上设置有物理按键或厂商Logo时,指纹传感器814可以与物理按键或厂商标志集成在一起。
光学传感器815用于采集环境光强度。在一个实施例中,处理器801可以根据光学传感器815采集的环境光强度,控制触摸显示屏805的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏805的显示亮度;当环境光强度较低时,调低触摸显示屏805的显示亮度。在另一个实施例中,处理器801还可以根据光学传感器815采集的环境光强度,动态调整摄像头组件806的拍摄参数。
接近传感器816,也称距离传感器,通常设置在终端800的前面板。接近传感器816用于采集用户与终端800的正面之间的距离。在一个实施例中,当接近传感器816检测到用户与终端800的正面之间的距离逐渐变小时,由处理器801控制触摸显示屏805从亮屏状态切换为息屏状态;当接近传感器816检测到用户与终端800的正面之间的距离逐渐变大时,由处理器801控制触摸显示屏805从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图8中示出的结构并不构成对终端800的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在示例性实施例中,还提供了一种非临时性计算机可读存储介质,当存储介质中的指令由计算机设备的处理器执行时,使得计算机设备能够执行上述基于JSBridge进行通信的方法中计算机设备所执行的步骤。
在示例性实施例中,还提供了一种计算机程序产品,当计算机程序产品中的指令由计算机设备的处理器执行时,使得计算机设备能够执行上述基于JSBridge进行通信的方法中计算机设备所执行的步骤。
本领域技术人员在考虑说明书及实践这里的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种基于JSBridge进行通信的方法,其特征在于,所述方法包括:
通过原生层加载网页的过程中,获取所述网页的加载进度;
当所述加载进度达到预设阈值时加载脚本Javascript文件,所述Javascript文件中包含用于生成JSBridge的预设方法;
当所述Javascript文件加载成功时,确定已创建JSBridge;
所述原生层与Web层基于所述JSBridge进行通信。
2.根据权利要求1所述的方法,其特征在于,所述当所述加载进度达到预设阈值时加载脚本Javascript文件,包括:
当所述加载进度达到所述预设阈值时启动指定线程,通过所述指定线程加载所述Javascript文件;
所述方法还包括:当所述Javascript文件加载成功时,停止所述指定线程。
3.根据权利要求1所述的方法,其特征在于,所述原生层与Web层基于所述JSBridge进行通信之前,所述方法还包括:
所述Web层调用所述JSBridge向所述原生层发送Ready事件,如果所述Ready事件发送成功,则确定所述JSBridge创建成功。
4.根据权利要求1所述的方法,其特征在于,所述原生层与Web层基于所述JSBridge进行通信,包括:
所述Web层基于所述JSBridge向所述预设方法传入参数信息,调用所述预设方法;
所述原生层中的所述预设方法接受所述Web层的调用,根据所述参数信息进行处理,得到处理结果;
调用回调函数,向所述Web层发送所述处理结果。
5.根据权利要求4所述的方法,其特征在于,所述根据所述参数信息进行处理,得到处理结果,包括以下至少一项:
所述参数信息包括网页标识,如果预设的白名单中包括所述网页标识,则根据所述参数信息进行处理,得到所述处理结果;
所述参数信息包括所述预设方法的方法名称,如果预设的白名单中包括所述方法名称,则根据所述参数信息进行处理,得到所述处理结果;
所述参数信息包括所述预设方法的方法名称,如果根据所述方法名称检测到所述预设方法已注册,则根据所述参数信息进行处理,得到所述处理结果。
6.根据权利要求4所述的方法,其特征在于,所述根据所述参数信息进行处理,得到处理结果,包括:
调用系统层提供的第一预设函数,对所述参数信息进行处理,得到第一处理结果;
调用所述原生层与所述Web层所属应用客户端提供的第二预设函数,对所述参数信息进行处理,得到第二处理结果。
7.一种基于JSBridge进行通信的装置,其特征在于,所述装置包括:
进度获取单元,被配置为通过原生层加载网页的过程中,获取所述网页的加载进度;
文件加载单元,被配置为当所述加载进度达到预设阈值时加载脚本Javascript文件,所述Javascript文件中包含用于生成JSBridge的预设方法;
第一确定单元,被配置为当所述Javascript文件加载成功时,确定已创建JSBridge;
通信单元,被配置为所述原生层与Web层基于所述JSBridge进行通信。
8.根据权利要求7所述的装置,其特征在于,所述通信单元,包括:
调用子单元,被配置为所述Web层基于所述JSBridge向所述预设方法传入参数信息,调用所述预设方法;
处理子单元,被配置为所述原生层中的所述预设方法接受所述Web层的调用,根据所述参数信息进行处理,得到处理结果;
发送子单元,被配置为调用回调函数,向所述Web层发送所述处理结果。
9.一种计算机设备,其特征在于,所述计算机设备包括:
一个或多个处理器;
用于存储所述一个或多个处理器可执行命令的易失性或非易失性存储器;
其中,所述一个或多个处理器被配置为执行如权利要求1至权利要求6任一项所述的基于JSBridge进行通信的方法。
10.一种非临时性计算机可读存储介质,当所述存储介质中的指令由计算机设备的处理器执行时,使得所述计算机设备能够执行如权利要求1至权利要求6任一项所述的基于JSBridge进行通信的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910797901.0A CN110502708B (zh) | 2019-08-27 | 2019-08-27 | 基于JSBridge进行通信的方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910797901.0A CN110502708B (zh) | 2019-08-27 | 2019-08-27 | 基于JSBridge进行通信的方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110502708A true CN110502708A (zh) | 2019-11-26 |
CN110502708B CN110502708B (zh) | 2020-10-30 |
Family
ID=68589796
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910797901.0A Active CN110502708B (zh) | 2019-08-27 | 2019-08-27 | 基于JSBridge进行通信的方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110502708B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114356452A (zh) * | 2021-12-31 | 2022-04-15 | 必要鸿源(北京)科技有限公司 | 定位结果信息的获取方法、装置、电子设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8849753B2 (en) * | 2008-05-20 | 2014-09-30 | Microsoft Corporation | Automating asynchronous programming in single threaded systems |
CN104978176A (zh) * | 2014-04-10 | 2015-10-14 | 腾讯科技(北京)有限公司 | 应用程序接口调用方法及装置 |
CN107832099A (zh) * | 2017-10-26 | 2018-03-23 | 咪咕数字传媒有限公司 | 一种客户端版本兼容的方法、装置及存储介质 |
CN108829398A (zh) * | 2018-03-27 | 2018-11-16 | 厦门欣旅通科技有限公司 | 一种移动端页面交互实现方法及装置 |
CN109743359A (zh) * | 2018-12-13 | 2019-05-10 | 平安普惠企业管理有限公司 | Hybrid通讯处理方法、装置、计算机设备及存储介质 |
CN109857515A (zh) * | 2018-12-20 | 2019-06-07 | 深圳前海微众银行股份有限公司 | 桥接通信方法、装置、设备及计算机可读存储介质 |
CN109871202A (zh) * | 2018-12-12 | 2019-06-11 | 江苏中威科技软件系统有限公司 | 一种移动端应用混合开发方法及框架 |
CN110321228A (zh) * | 2018-03-28 | 2019-10-11 | 腾讯科技(深圳)有限公司 | 原生方法的调用方法、装置、设备及计算机可读存储介质 |
-
2019
- 2019-08-27 CN CN201910797901.0A patent/CN110502708B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8849753B2 (en) * | 2008-05-20 | 2014-09-30 | Microsoft Corporation | Automating asynchronous programming in single threaded systems |
CN104978176A (zh) * | 2014-04-10 | 2015-10-14 | 腾讯科技(北京)有限公司 | 应用程序接口调用方法及装置 |
CN107832099A (zh) * | 2017-10-26 | 2018-03-23 | 咪咕数字传媒有限公司 | 一种客户端版本兼容的方法、装置及存储介质 |
CN108829398A (zh) * | 2018-03-27 | 2018-11-16 | 厦门欣旅通科技有限公司 | 一种移动端页面交互实现方法及装置 |
CN110321228A (zh) * | 2018-03-28 | 2019-10-11 | 腾讯科技(深圳)有限公司 | 原生方法的调用方法、装置、设备及计算机可读存储介质 |
CN109871202A (zh) * | 2018-12-12 | 2019-06-11 | 江苏中威科技软件系统有限公司 | 一种移动端应用混合开发方法及框架 |
CN109743359A (zh) * | 2018-12-13 | 2019-05-10 | 平安普惠企业管理有限公司 | Hybrid通讯处理方法、装置、计算机设备及存储介质 |
CN109857515A (zh) * | 2018-12-20 | 2019-06-07 | 深圳前海微众银行股份有限公司 | 桥接通信方法、装置、设备及计算机可读存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114356452A (zh) * | 2021-12-31 | 2022-04-15 | 必要鸿源(北京)科技有限公司 | 定位结果信息的获取方法、装置、电子设备及存储介质 |
CN114356452B (zh) * | 2021-12-31 | 2024-03-19 | 必要鸿源(北京)科技有限公司 | 定位结果信息的获取方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110502708B (zh) | 2020-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109688147B (zh) | 应用登录方法、装置、终端、服务器、系统及存储介质 | |
CN110502308A (zh) | 页面样式切换方法、装置、计算机设备及存储介质 | |
CN110290146A (zh) | 分享口令的生成方法、装置、服务器及存储介质 | |
CN109660855A (zh) | 贴纸显示方法、装置、终端及存储介质 | |
CN109413098A (zh) | 网页元素展示的方法、装置、终端及存储介质 | |
CN108717365B (zh) | 在应用程序中执行功能的方法和装置 | |
CN110046018A (zh) | 显示消息的方法、装置、电子设备及介质 | |
CN109522146A (zh) | 对客户端进行异常测试的方法、装置及存储介质 | |
CN110321228A (zh) | 原生方法的调用方法、装置、设备及计算机可读存储介质 | |
CN109922356A (zh) | 视频推荐方法、装置和计算机可读存储介质 | |
CN108806670B (zh) | 语音识别方法、装置及存储介质 | |
CN109525900A (zh) | 在视频中添加水印的方法、装置、终端及存储介质 | |
CN109800003A (zh) | 应用下载方法、装置、终端及存储介质 | |
CN111191227B (zh) | 阻止恶意代码执行的方法和装置 | |
CN109902089A (zh) | 利用异构索引的查询方法、装置、电子设备及介质 | |
CN113377647B (zh) | 页面处理方法、装置、服务器、终端及可读存储介质 | |
CN109491753A (zh) | 悬浮窗口显示方法、装置及存储介质 | |
CN110032702A (zh) | 网页显示方法、装置、设备及存储介质 | |
CN110502708A (zh) | 基于JSBridge进行通信的方法、装置及存储介质 | |
CN109614563A (zh) | 显示网页的方法、装置、设备及存储介质 | |
CN113518261A (zh) | 指引视频播放方法、装置、计算机设备及存储介质 | |
CN109995804A (zh) | 目标资源信息的显示方法、信息提供方法及装置 | |
CN111970298A (zh) | 应用访问方法、装置、存储介质及计算机设备 | |
CN110109770A (zh) | 调试方法、装置、电子设备及介质 | |
CN108984259A (zh) | 界面显示方法、装置及终端 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |