原生方法的调用方法、装置、设备及计算机可读存储介质制造方法及图纸

技术编号:22295299 阅读:16 留言:0更新日期:2019-10-15 04:29
本发明专利技术实施例公开了一种原生方法的调用方法、装置、设备及计算机可读存储介质。方法包括:获取JS层对原生方法的调用请求,所述调用请求携带所述原生方法的信息;对所述调用请求进行权限验证;当所述权限验证通过时,将所述调用请求转发至原生层,所述原生层根据所述调用请求中携带的原生方法的信息调用所述原生方法。当获取到JS层对原生方法的调用请求后,通过对该调用请求进行权限验证,从而保证了安全性;在通过权限验证后,通过将调用请求转发至原生层进行处理,避免了再去通知JS层,缩短了调用路径,进而提高了调用效率。

Invoking methods, devices, devices and computer-readable storage media of native methods

【技术实现步骤摘要】
原生方法的调用方法、装置、设备及计算机可读存储介质
本专利技术实施例涉及计算机
,特别涉及一种原生方法的调用方法、装置、设备及计算机可读存储介质。
技术介绍
随着计算机技术的发展,应用程序(App)的种类越来越多。为了开发App,时常需要调用原生方法,例如,通过JS(javascript,一种脚本语言)调用Native(原生)方法。相关技术在实现原生方法的调用时,任何JS模块(JSModule)可以发起NativeCall(Native调用)来调用Native层的任意方法。在JS模块发起调用请求时,会将方法名、参数等放入JS侧的消息队列(MessageQueue)中。之后,通过Java层事件通知JS层后,消息队列将JS放入的内容通过中间层(JSBridge)传递给Native层,Native层根据方法名调用相应的方法。然而,由于每个JS模块都可以调用任意Native方法,导致安全性较低。此外,JS调用Native时需要通过Java层事件通知JS层,导致调用效率较低。
技术实现思路
本专利技术实施例提供了一种原生方法的调用方法、装置、设备及计算机可读存储介质,可用于解决相关技术中的问题。所述技术方案如下:一方面,本专利技术实施例提供一种原生方法的调用方法,所述方法包括:获取JS层对原生方法的调用请求,所述调用请求携带所述原生方法的信息;对所述调用请求进行权限验证;当所述权限验证通过时,将所述调用请求转发至原生层,所述原生层根据所述调用请求中携带的原生方法的信息调用所述原生方法。一方面,提供了一种原生方法的调用装置,所述装置包括:获取模块,用于获取JS层对原生方法的调用请求,所述调用请求携带所述原生方法的信息;验证模块,用于对所述调用请求进行权限验证;转发模块,用于当所述权限验证通过时,将所述调用请求转发至原生层;调用模块,用于所述原生层根据所述调用请求中携带的原生方法的信息调用所述原生方法。一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集在被所述处理器执行时实现上述的原生方法的调用方法。一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集在被执行时实现上述的原生方法的调用方法。本专利技术实施例提供的技术方案可以带来如下有益效果:当获取到JS层对原生方法的调用请求后,通过对该调用请求进行权限验证,从而保证了安全性;在通过权限验证后,通过将调用请求转发至原生层进行处理,避免了再去通知JS层,缩短了调用路径,进而提高了调用效率。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是相关技术中提供的一种原生方法的调用过程示意图;图2是本专利技术实施例提供的一种实施环境示意图;图3是本专利技术实施例提供的一种原生方法的调用方法流程图;图4是本专利技术实施例提供的一种权限配置文件的下载过程示意图;图5是本专利技术实施例提供的一种权限验证的过程示意图;图6是本专利技术实施例提供的一种处理调用请求的过程示意图;图7是本专利技术实施例提供的一种原生方法的调用过程示意图;图8是本专利技术实施例提供的一种原生方法的调用装置的结构示意图;图9是本专利技术实施例提供的一种原生方法的调用装置的结构示意图;图10是本专利技术实施例提供的一种原生方法的调用装置的结构示意图;图11是本专利技术实施例提供的一种终端的结构示意图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图对本专利技术实施方式作进一步地详细描述。随着计算机技术的发展,开发出的应用程序(App)的种类越来越多。目前,主流的App开发模式可以概括成四种:NativeApp(原生App)、WebApp(网页App)、HybridApp(混合模式App)以及ReactNativeApp。其中,HybridApp为基于webView(网页视图)的跨平台混合开发App技术,由原生App提供统一的API(ApplicationProgramInterface,应用程序接口)给JS侧调用,实现一套前端代码在多端进行功能复用。WebApp与HybridApp受限于webView的性能桎梏,相比原生而言有不少损耗,体验无法和原生相比。ReactNativeApp为一种移动端技术框架,可以通过使用JavaScript和React技术在android(安卓)与ios(移动操作系统)端上构建原生App,获得完全一致的开发体验。另外,ReactNativeApp通过写一套JS代码就能在多端实现功能,同时其性能体验高于HybridApp甚至不逊色于原生。它通过基于JavaScriptCore(JS核)使得JS侧与Native侧可以互相调用。而JSBridge(JS桥)作为JS与Native的中间层,起到请求转发的作用,对于ReactNativeApp而言,其本质为JS层与Native层互相调用的过程。其中,JavaScriptCore是webkit(浏览器引擎)的一个重要组成部分,主要是对JS进行解析和提供执行环境。然而,在App开发过程中,无论上述哪种App开发模式,时常需要调用原生方法(即java调用非java代码的接口),例如,通过JS(javascript)调用Native(原生)方法。如图1所示,相关技术在实现原生方法的调用时,任何JS模块(JSModule)可以发起NativeCall(原生调用)来调用Native层的任意方法。在JS模块发起请求时,将方法名、参数等放入JS侧的消息队列(MessageQueue)中。通过Java层事件通知JS层后,消息队列将JS放入的内容通过中间层(JSBridge)传递给Native层,Native层根据方法名调用相应的方法。另外,目前JS侧调用Native时,只校验了java方法是否有能被JS侧调用的标志,由于每个JS模块都可以调用任意Native方法,导致安全性较低。此外,相关技术中,JS不是直接通过注册接口去主动调用java方法的,而是要通过java层的驱动(例如事件,timer等)到JS层后,JS才会将数据返回给java层,再通过注册表去调用原生方法,整体JS调用Native的流程过长,导致调用效率较低,影响性能。为此,本专利技术实施例提供了一种原生方法的调用方法,该方法优化了JS调用Native的流程,在JSBridge层加入了APIPermission(权限)校验,并使JS可以随时主动调用Native方法,缩短了调用路径,使整套方案更加安全高效。该方法包括但不限于应用在同一个App中,需要控制不同JS能调用不同Native方法的权限等应用场景中。请参考图2,其示出了本专利技术实施例提供的实施环境的示意图。该实施环境可以包括:终端21和服务器22。终端21安装有App开发客户端,当该客户端启动后,可通过终端21从服务器22上获取权限本文档来自技高网...

【技术保护点】
1.一种原生方法的调用方法,其特征在于,所述方法包括:获取JS层对原生方法的调用请求,所述调用请求携带所述原生方法的信息;对所述调用请求进行权限验证;当所述权限验证通过时,将所述调用请求转发至原生层,所述原生层根据所述调用请求中携带的原生方法的信息调用所述原生方法。

【技术特征摘要】
1.一种原生方法的调用方法,其特征在于,所述方法包括:获取JS层对原生方法的调用请求,所述调用请求携带所述原生方法的信息;对所述调用请求进行权限验证;当所述权限验证通过时,将所述调用请求转发至原生层,所述原生层根据所述调用请求中携带的原生方法的信息调用所述原生方法。2.根据权利要求1所述的方法,其特征在于,所述对所述调用请求进行权限验证,包括:获取权限配置文件,所述权限配置文件中存储有所述JS层可调用和/或禁止调用的原生方法的信息;根据所述权限配置文件对所述调用请求进行权限验证。3.根据权利要求2所述的方法,其特征在于,所述根据所述权限配置文件对所述调用请求进行权限验证,包括:当所述权限配置文件被加密时,对所述权限配置文件进行解密,根据解密后的权限配置文件对所述调用请求进行权限验证。4.根据权利要求2所述的方法,其特征在于,所述方法还包括:当获取权限配置文件失败时,获取预设的默认配置文件,所述预设的默认配置文件中存储有所述JS层可调用和/或禁止调用的原生方法的信息;根据所述预设的默认配置文件对所述调用请求进行权限验证。5.根据权利要求1-4中任一所述的方法,其特征在于,所述对所述调用请求进行权限验证,包括:获取当前正在运行的JS上下文环境信息,根据所述JS上下文环境信息获取所述JS层可调用的原生方法的信息;当所述调用请求中携带的原生方法的信息与所述JS层可调用的原生方法的信息相匹配时,所述权限验证通过。6.根据权利要求1-4中任一所述的方法,其特征在于,所述对所述调用请求进行权限验证,包括:获取当前正在运行的JS上下文环境信息,根据所述JS上下文环境信息获取所述JS层禁止调用的原生方法的信息;当所述调用请求中携带的原生方法的信息与所述JS层禁止调用的原生方法的信息相匹配时,所述权限验证未通过。7.根据权利要求1-4中任一所述的方...

【专利技术属性】
技术研发人员:朱青蓥李仁生蔡元锋许有甜殷洁
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1