原生应用的页面热更新方法及装置与流程

文档序号:11386214阅读:302来源:国知局
原生应用的页面热更新方法及装置与流程

本发明涉及移动应用技术领域,尤其涉及一种原生应用的页面热更新方法及装置。



背景技术:

如今移动应用的更新周期越来越短,如国内的直播平台,提供的移动应用更新周期为半个月,而每次更新除了较大的功能更改外也有一些小的页面布局调整,而每次更新后的发版的升级包,从应用市场重新下载升级包进行升级。特别是ios应用的更新,即使是一些应用的页面更新,而每次更新后的发版都要经过apple冗长的审核周期,因此ios应用更新一次的审核周期长,而一些时候,ios应用的更新仅为一些页面布局的调整,而ios应用尚未实现热更新功能,因此即使页面布局的调整的更新也需要经过apple冗长的审核周期,而应用的页面变动频繁,因此耗费了较多审核时间。



技术实现要素:

本发明实施例通过提供一种原生应用的页面热更新方法及装置,解决了应用页面频繁更新会耗费较多审核时间的技术问题。

第一方面,本发明实施例提供了一种原生应用的页面热更新方法,应用于包括显示界面的移动终端中,所述原生应用配置为在所述移动终端上运行,所述原生应用基于所述移动终端的原生编程语言编写,所述方法包括:

获取到基于rn框架生成的目标更新程序时,建立所述目标更新程序与所述原生应用之间的通信桥接;

所述目标更新程序通过所述通信桥接向所述原生应用发送跳转指令;

所述原生应用接收到所述跳转指令时,将所述显示界面从当前页面跳转至基于所述目标更新程序生成的目标页面。

可选的,所述目标更新程序通过所述通信桥接向所述原生应用发送跳转指令,包括:

所述目标更新程序通过调用所述通信桥接的选择视图控制接口向所述原生应用发送通信信息;

所述原生应用通过调用所述选择视图控制接口,从所述通信信息中解析出所述跳转指令。

可选的,在所述建立所述目标更新程序与所述原生应用之间的通信桥接之后,所述方法还包括:

所述目标更新程序通过所述通信桥接向所述原生应用发送参数回调请求;

所述原生应用接收到来自所述目标更新程序的参数回调请求时,所述原生应用向所述目标更新程序返回由所述参数回调请求指定的目标参数;

在所述将所述显示界面从当前页面跳转至基于所述目标更新程序生成的目标页面之后,所述方法还包括:

在所述目标页面中展示所述目标参数。

可选的,所述原生应用向所述目标更新程序返回所述参数回调请求指定的目标参数,包括:

从所述原生应用中提取由所述参数回调请求指定的目标参数,其中,所述目标参数在所述原生应用中为json参数类型;

所述原生应用对所述目标参数进行对象封装,得到封装后目标参数;

所述原生应用将所述封装后目标参数返回给所述目标更新程序;

所述目标更新程序接收所述封装后目标参数;

所述目标更新程序将所述封装后目标参数从所述json参数类型转换为与rn框架匹配的参数类型。

可选的,所述获取到基于rn框架生成的目标更新程序,包括:接收到来自服务器的更新请求时,从所述服务器下载所述目标更新程序。

第二方面,本发明实施例提供了一种原生应用的页面热更新装置,应用于包括显示界面的移动终端中,所述原生应用配置为在所述移动终端上运行,所述原生应用基于所述移动终端的原生编程语言编写,所述装置包括:

更新程序获取单元,用于获取到基于rn框架生成的目标更新程序时,建立所述目标更新程序与所述原生应用之间的通信桥接;

跳转指令发送单元,用于使所述目标更新程序通过所述通信桥接向所述原生应用发送跳转指令;

页面跳转单元,用于所述原生应用接收到所述跳转指令时,将所述显示界面从当前页面跳转至基于所述目标更新程序生成的目标页面。

可选的,所述跳转指令发送单元,包括:

通信信息发送至单元,用于使所述目标更新程序通过调用所述通信桥接的选择视图控制接口向所述原生应用发送通信信息;

解析子单元,用于使所述原生应用通过调用所述选择视图控制接口,从所述通信信息中解析出所述跳转指令。

可选的,所述装置还包括:

请求发送单元,用于使所述目标更新程序通过所述通信桥接向所述原生应用发送参数回调请求;

参数回调单元,用于使所述原生应用接收到来自所述目标更新程序的参数回调请求时,所述原生应用向所述目标更新程序返回由所述参数回调请求指定的目标参数;

参数展示单元,用于在所述将所述显示界面从当前页面跳转至基于所述目标更新程序生成的目标页面之后,在所述目标页面中展示所述目标参数。

可选的,所述参数回调单元,包括:

参数提取子单元,用于从所述原生应用中提取由所述参数回调请求指定的目标参数,其中,所述目标参数在所述原生应用中为json参数类型;

参数封装子单元,用于使所述原生应用对所述目标参数进行对象封装,得到封装后目标参数;

返回子单元,用于使所述原生应用将所述封装后目标参数返回给所述目标更新程序;

参数接收子单元,用于使所述目标更新程序接收所述封装后目标参数;

类型转换子单元,用于使所述目标更新程序将所述封装后目标参数从所述json参数类型转换为与rn框架匹配的参数类型。

可选的,所述更新程序获取单元,具体用于:接收到来自服务器的更新请求时,从所述服务器下载所述目标更新程序。

本发明实施例提供的一个或多个技术方案,至少实现了如下技术效果或优点:

获取到基于rn框架生成的目标更新程序时建立目标更新程序与原生应用之间的通信桥接,则目标更新程序通过通信桥接向原生应用发送跳转指令;原生应用接收跳转指令时将显示界面从当前页面跳转至基于目标更新程序生成的目标页面,从而通信桥接使rn框架开发的目标更新程序与原生应用之间能够进行信息传递,使目标更新程序能够调用原生应用的原生业务逻辑,对页面进行热更新至目标更新程序生成的目标页面,使得对于频繁更新页面不再需要经过冗长的审核周期后发版,而直接通过跳转进行热更新,从而简化了移动应用的更新过程,加快了移动应用的更新速度。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例中原生应用的页面热更新方法的流程图;

图2为本发明实施例中原生应用的页面热更新装置的模块图。

具体实施方式

本发明实施例提供的一种原生应用的页面热更新方法,应用于包括显示界面的移动终端。在本发明实施中,移动终端具体为基于ios平台的移动终端,原生应用配置为在基于ios平台的移动终端上运行,其中,原生应用为通过移动终端的原生编程语言编写,具体的,原生应用为基于ios平台的编程语言编写。

需要说明的是,在本发明实施例中,本发明实施例提供的原生应用的页面热更新方法应用于ios9.0及以上版本。

参考图1所示,本发明实施例提供的原生应用的页面热更新方法包括如下步骤:

s101:获取到基于rn框架生成的目标更新程序时,建立目标更新程序与原生应用之间的通信桥接;

s102:目标更新程序通过通信桥接向原生应用发送跳转指令;

s103:原生应用通过通信桥接接收到跳转指令时,将显示界面从当前页面跳转至基于目标更新程序生成的目标页面。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

下面结合图1,对本发明实施例提供的原生应用的页面热更新方法进行详细描述:

首先,执行s101:获取到基于rn框架生成的目标更新程序时,建立目标更新程序与原生应用之间的通信桥接。

需要说明的是,在本发明实施例中,目标更新包括会在显示界面上呈现目标页面的元素,用于对原生应用进行页面更新的程序包。rn(reactnative)框架为开源的跨平台移动应用开发框架,支持ios平台和android平台。获取到基于rn框架生成的目标更新程序时,基于目标更新程序在后台对原生应用进行更新。

具体的,在目标更新程序与原生应用之间创建桥接工具bridgemanager,通过桥接工具建立目标更新程序与原生应用之间的通信桥接。

桥接工具bridgemanager通过rn框架的react代码库中的bridgemodule协议函数来创建。

在具体实施过程中,可以通过包括bridgemodule协议函数的代码实现桥接工具bridgemanager的创建。

其中,创建桥接工具bridgemanager的实现过程为:通过调用协议函数bridgemodule,以单例模式创建一个桥接工具rntoolmanager对象。其中,rntoolmanager类继承自rcteventemitter类。通过单例模式创建桥接工具rntoolmanager对象可以保证系统中一个类只有一个实例,而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。

具体的,通过dispatch_once函数创建桥接工具rntoolmanager对象的单例,其中,dispatch_one函数执行代码块一次,传入一个指向oncetoken的变量,当oncetoken为零时代码块运行,而当dispatch_once运行过代码块之后,将oncetoken的值改为非零。在本实施例中,执行在内存分配一个rntoolmanager对象的代码块:{instance=[[rntoolmanageralloc]init];}。

在一实施例中,目标更新程序的程序包从服务器获取。在具体实施过程中,服务器向移动终端发送更新通知,更新通知用于通知移动终端,则移动终端接收到来自服务器的更新通知后,使得移动终端监听到在服务器存在目标更新程序,从服务器下载目标更新程序,将下载的目标更新程序与原生应用在移动终端组合成新程序包,新程序包在移动终端的后台完成安装。

接着,执行s102:目标更新程序通过通信桥接向原生应用发送跳转指令。

在一实施例中,在新程序包在移动终端的后台完成安装后的应用启动时执行s102。

具体的,在桥接工具中设置有选择视图控制(selectviewcontroller)接口,目标更新程序通过调用通信桥接的selectviewcontroller接口向原生应用发送通信信息;原生应用通过调用selectviewcontroller接口,从接收到的通信信息中解析出跳转指令。

在具体实施过程中,目标更新程序通过调用selectviewcontroller接口向原生应用发送通信信息,可以通过如下代码实现:

rntoolmanager.selectviewcontroller(‘yubaviewcontroller’)

在具体实施过程中,原生应用通过调用selectviewcontroller接口接收通信信息,并从通信信息中解析出跳转指令,可以通过如下代码实现:

其中,实现过程为:调用以name作为参数的selectmethodnamepush函数,通过dispatch_async开启一个异步操作,通过调用dispatch_get_main_queue()方法在异步运行中将主队列中的运行任务提交到主线程中执行,主队列中的运行任务为:委托判断实例中是否有以selectmethodnamepush命名的方法,若有,就将name传递下去。在本实施例中,name为目标页面的页面名称,用于标记目标页面。

再接着,执行s103:原生应用通过通信桥接接收到跳转指令时,将显示界面从当前页面跳转至基于目标更新程序生成的目标页面。

具体的,根据原生应用标记目标页面的页面名称,将显示界面从当前页面跳转至基于目标更新程序生成的目标页面。

具体的,根据原生应用标记目标页面的页面名称,将显示界面从当前页面跳转至基于目标更新程序生成的目标页面。具体的实现过程为:通过没有返回值的selectmethodnamepush函数唤起页面跳转,根据从原生应用传递过来的页面名称找到目标页面,使用navigationviewcontroller函数的pushviewcontroller方法进行将页面从当前页面至vcname标记的目标页面,使得跳转至的目标页面同样在navigationviewcontroller容器中。在本实施例中,vcname为标记需要跳转的目标页面。

可以通过如下代码实现唤起页面跳转,以跳转至目标页面:

在一实施例中,在建立目标更新程序与原生应用之间的通信桥接之后,还包括:目标更新程序通过通信桥接向原生应用发送参数回调请求;原生应用接收到来自目标更新程序的参数回调请求时,原生应用向目标更新程序返回由参数回调请求指定的目标参数。具体的,参数回调请求指定的目标参数从原生应用中提取,指定的目标参数可以为用户数据,比如,用户名、登陆密码、昵称、用户头像等等。

具体的,原生应用根据是否接收到参数回调请求,判断原生应用是否需要向目标更新程序返回参数:如果原生应用接收到参数回调请求,则原生应用需要向目标更新程序返回参数,如果原生应用未接收到参数回调请求,则原生应用不需要向目标更新程序返回参数。

进一步的,本发明实施例提供的技术方案还包括:在将显示界面从当前页面跳转至基于目标更新程序生成的目标页面之后,在目标页面中展示目标参数。

由于目标更新程序与原生应用的编程语言不一致,需要对目标参数进行数据类型的转换。则具体的,原生应用向目标更新程序返回由参数回调请求指定的目标参数,包括:

从原生应用中提取由参数回调请求指定的目标参数,对从原生应用中提取的目标参数进行对象封装,得到封装后目标参数,原生应用将封装后目标参数返回给目标更新程序,目标更新程序接收到返回的封装后目标参数后,目标更新程序将封装后目标参数从json参数类型转换为与rn框架匹配的参数类型。

举例来讲,参数回调请求指定需要返回的目标参数包括用户名和用户头像,则从原生应用中提取用户名和头像。json参数类型为原生应用中标准的参数类型。具体的,使用rcteventdispatcher函数对为json参数类型的目标参数进行对象封装,以得到封装后目标参数。

如果不需要返回参数,则可以通过如下代码实现目标更新程序通知原生应用不需要返回参数:

rct_export_method(functionwithnocallback:(id)object)

如果需要返回参数,则可以通过异步回调实现目标更新程序通知原生应用需要返回参数:

rct_export_method(getuserinfo:(rctresponsesenderblock)userinfocallback){userinfocallback(@[[error],object])}

通过异步回调实现原生应用向目标更新程序返回目标参数。具体为,判断返回参数是否为空,如果不为空,通过调用object.prototype.tostring.call()方法判断返回的目标参数的类型,判断原生应用是否存在目标参数,如果存在,原生应用则向目标更新程序返回目标参数,实现代码如下:

基于同一发明构思,本发明实施例提供了一种原生应用的页面热更新装置,应用于包括显示界面的移动终端中,原生应用配置为在移动终端上运行,原生应用基于移动终端的原生编程语言编写。

参考图2所示,该原生应用的页面热更新装置包括:

更新程序获取单元201,用于获取到基于rn框架生成的目标更新程序时,建立所述目标更新程序与所述原生应用之间的通信桥接;

跳转指令发送单元202,用于使所述目标更新程序通过所述通信桥接向所述原生应用发送跳转指令;

页面跳转单元203,用于所述原生应用接收到所述跳转指令时,将所述显示界面从当前页面跳转至基于所述目标更新程序生成的目标页面。

可选的,所述跳转指令发送单元202,包括:

通信信息发送至单元,用于使所述目标更新程序通过调用所述通信桥接的选择视图控制接口向所述原生应用发送通信信息;

解析子单元,用于使所述原生应用通过调用所述选择视图控制接口,从所述通信信息中解析出所述跳转指令。

可选的,所述装置还包括:

请求发送单元,用于使所述目标更新程序通过所述通信桥接向所述原生应用发送参数回调请求;

参数回调单元,用于使所述原生应用接收到来自所述目标更新程序的参数回调请求时,所述原生应用向所述目标更新程序返回由所述参数回调请求指定的目标参数;

参数展示单元,用于在所述将所述显示界面从当前页面跳转至基于所述目标更新程序生成的目标页面之后,在所述目标页面中展示所述目标参数。

可选的,所述参数回调单元,包括:

参数提取子单元,用于从所述原生应用中提取由所述参数回调请求指定的目标参数,其中,所述目标参数在所述原生应用中为json参数类型;

参数封装子单元,用于使所述原生应用对所述目标参数进行对象封装,得到封装后目标参数;

返回子单元,用于使所述原生应用将所述封装后目标参数返回给所述目标更新程序;

参数接收子单元,用于使所述目标更新程序接收所述封装后目标参数;

类型转换子单元,用于使所述目标更新程序将所述封装后目标参数从所述json参数类型转换为与rn框架匹配的参数类型。

可选的,所述更新程序获取单元,具体用于:接收到来自服务器的更新请求时,从所述服务器下载所述目标更新程序。

本发明实施例提供的一个或多个实施例,至少实现了如下技术效果或优点:

获取到基于rn框架生成的目标更新程序时建立目标更新程序与原生应用之间的通信桥接,则目标更新程序通过通信桥接向原生应用发送跳转指令;原生应用接收跳转指令时将显示界面从当前页面跳转至基于目标更新程序生成的目标页面,从而通信桥接使rn框架开发的目标更新程序与原生应用之间能够进行信息传递,使目标更新程序能够调用原生应用的原生业务逻辑,对页面进行热更新至目标更新程序生成的目标页面,使得对于频繁更新页面不再需要经过冗长的审核周期后发版,而直接通过跳转进行热更新,从而简化了移动应用的更新过程,加快了移动应用的更新速度。

在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的各描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本发明实施例的智能摄像系统以及网络摄像头中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者系统程序(如计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是,上述各实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应该将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或者步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干系统的单元权利要求中,这些系统中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

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