发明内容
本发明实施例提供了一种应用程序的升级方法、装置及系统,可以节省用户给应用程序进行升级时所耗费的流量和时间。
本发明实施例提供一种应用程序的升级方法,包括:
接收服务器发送过来的升级通知,所述升级通知中携带有网络地址,所述网络地址加载有用于升级的M个子程序包,其中,所述应用程序包括N个子程序包,N和M为正整数,N>M,M>0;
根据所述网络地址下载所述用于升级的M个子程序包;
将与所述用于升级的M个子程序包相对应的M个本地子程序包替换为所述用于升级的M个子程序包。
其中,所述接收服务器发送过来的升级通知之前,所述方法还包括:
向所述服务器发送升级所述应用程序的查询指令,所述查询指令携带有所述应用程序中所有子程序包的版本信息,以使所述服务器根据所述查询指令确定所述应用程序是否需要升级,若是,则给所述应用程序发送所述升级通知。
其中,所述根据所述网络地址下载所述用于升级的M个子程序包,包括:
若接收到确认升级的操作指令,执行所述根据所述网络地址下载所述用于升级的M个子程序包的步骤。
其中,所述接收服务器发送过来的升级通知之后,所述方法还包括:
基于WebView浏览器控件显示所述升级通知,并加载所述升级通知中所携带的网络地址。
其中,所述将与所述用于升级的M个子程序包相对应的M个本地子程序包替换为所述用于升级的M个子程序包,包括:
获取所述用于升级的M个子程序包的标识符;
根据所述用于升级的M个子程序包的标识符,获取所有本地子程序包中与所述标识符相同的M个本地子程序包;
将所述M个本地子程序包替换为所述用于升级的M个子程序包。
其中,所述将所述M个本地子程序包替换为所述用于升级的M个子程序包之前,所述方法还包括:
对所述M个本地子程序包进行备份。
其中,所述方法还包括:
确定所述应用程序是否成功将所述M个本地子程序包替换为所述用于升级的M个子程序包,若是,表示升级成功;若否,表示升级失败,根据已备份的M个本地子程序包将所述应用程序恢复到未进行升级前的状态。
其中,所述方法还包括:
输出所述应用程序的升级信息,所述升级信息包括升级结果和所述应用程序升级后所具有的新属性。
相应的,本发明实施例还提供一种应用程序的升级装置,包括:
接收模块,用于接收服务器发送过来的升级通知,所述升级通知中携带有网络地址,所述网络地址加载有用于升级的M个子程序包,其中,所述应用程序包括N个子程序包,N和M为正整数,N>M,M>0;
下载模块,用于根据所述网络地址下载所述用于升级的M个子程序包;
替换模块,用于将与所述用于升级的M个子程序包相对应的M个本地子程序包替换为所述用于升级的M个子程序包。
其中,所述装置还包括:
发送模块,用于向所述服务器发送升级所述应用程序的查询指令,所述查询指令携带有所述应用程序中所有子程序包的版本信息,以使所述服务器根据所述查询指令确定所述应用程序是否需要升级,若是,则给所述应用程序发送所述升级通知。
其中,所述下载模块还用于:
若接收到确认升级的操作指令,执行所述根据所述网络地址下载所述用于升级的M个子程序包的步骤。
其中,所述装置还包括:
显示模块,用于基于WebView浏览器控件显示所述升级通知,并加载所述升级通知中所携带的网络地址。
其中,所述替换模块包括:
第一获取单元,用于获取所述用于升级的M个子程序包的标识符;
第二获取单元,用于根据所述用于升级的M个子程序包的标识符,获取所有本地子程序包中与所述标识符相同的M个本地子程序包;
替换单元,用于将所述M个本地子程序包替换为所述用于升级的M个子程序包。
其中,所述替换模块还包括:
备份单元,用于对所述M个本地子程序包进行备份。
其中,所述装置还包括:
确定模块,用于确定所述应用程序是否成功将所述M个本地子程序包替换为所述用于升级的M个子程序包,若是,表示升级成功;若否,表示升级失败,根据已备份的M个本地子程序包将所述应用程序恢复到未进行升级前的状态。
其中,所述装置还包括:
输出模块,用于输出所述应用程序的升级信息,所述升级信息包括升级结果和所述应用程序升级后所具有的新属性。
相应的,本发明实施例还提供一种应用程序的升级系统,包括服务器和终端,所述终端上安装了包括如上所述装置的应用程序,所述服务器用于向所述终端发送升级通知,以使所述终端上的应用程序根据所述升级通知进行升级。
实施本发明实施例,具有如下的有益效果:
应用程序接收服务器发送过来的升级通知,所述升级通知中携带有服务器提供给应用程序用于升级的M个子程序包的网络地址;根据所述网络地址下载用于升级的M个子程序包;将与用于升级的M个子程序包相对应的M个本地子程序包替换为所述用于升级的M个子程序包,其中,M个子程序包不是应用程序的所有子程序包,从而通过更新部分子程序包即可实现应用程序的升级。采用本发明实施例,可以节省用户给应用程序进行升级时所耗费的流量和时间。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,图1是本发明实施例提供的一种应用程序的升级方法的流程示意图,在本发明实施例中,该方法包括以下步骤。
S101:接收服务器发送过来的升级通知,所述升级通知中携带有网络地址,所述网络地址加载有用于升级的M个子程序包,其中,所述应用程序包括N个子程序包,N和M为正整数,N>M,M>0。
作为本发明的一种实施方式,所述应用程序可以是已模块化的应用程序,整个安装文件包括N个独立组件,每个组件对应一个子程序包,例如:JAVA子程序包,其中,N>1。换句话说,开发者在设计应用程序时,可以对整个应用程序进行模块化设计,每个模块对应一个组件,每个组件对应一个子程序包,应用程序包括多个独立组件,这些独立的组件通过各自提供的API接口(Application Programming Interface,应用程序编程接口)与其它组件进行数据交互。例如:按照程序逻辑,可以将应用程序拆分出多个“功能模块”,如“注册”、“管理”等;按照游戏或社区类程序的关卡或场景,可以拆分出不同的“场景模块”,在需要时,应用程序可加载这些模块,模块间通过调用各自的API接口进行数据通信。
可以理解的,每个子程序包具有独一无二的组件名称及版本号,如果其中某个子程序包有新版本发布了,则在服务器上该子程序包会有一个比原有版本号大的新版本号。例如:版本号可按字典顺序排列,如1.34.1、1.35.1或2.0。
当服务器存在至少一个子程序包的更新版本时,可以是服务器基于消息推送服务机制向安装有该应用程序的终端发送升级通知,提示用户是否需要升级应用程序。也可以是在终端上启动该应用程序时,应用程序自动获取本地所有子程序包的版本信息后,向服务器发送升级所述应用程序的查询指令,该查询指令包括应用程序在本地获取到的所有子程序包的版本信息,其中,版本信息包括子程序包的名称和版本号。以使服务器接收到该终端上的应用程序发送过来的查询指令后,根据查询指令中携带的版本信息与服务器中保存的所有子程序包的最新版本信息进行比对,若存在至少一个子程序包的版本号比版本信息中提供的对应的子程序包的版本号高,即存在至少一个子程序包可以升级,则向该应用程序发送升级通知,所述升级通知中携带有网络地址,所述网络地址加载有用于升级的子程序包,提示用户是否需要升级应用程序。为方便说明,假设存在M个子程序包可以升级,于是,所述网络地址加载有用于升级的M个子程序包,其中,N>M,M>0,N和M都为正整数。应用程序接收服务器发送过来的升级通知,接收到的升级通知中包括服务器提供给该应用程序用于升级的M个子程序包的网络地址。进一步的,服务器端在对子程序包进行任意修改时,均在预设的文本中记录相关修改信息,包括服务器端未对子程序包内容进行修改,但却更改了该子程序包的版本号的情况,因此,服务器端接收到应用程序发送过来的查询指令时,根据版本信息和该预设的文本共同确定应用程序是否需要升级,若判断出确实存在至少一个子程序包可以升级,则向该应用程序发送升级通知。
S102:根据所述网络地址下载所述用于升级的M个子程序包。
具体的,可以是应用程序接收到升级通知后,不显示该升级通知,直接根据升级通知中携带的网络地址自动去下载用于升级的M个子程序包,无需用户进行确认,应用程序自动进行升级。
但作为一种优选的实施方式,应用程序接收到升级通知后,基于WebView浏览器控件显示所述升级通知,并加载所述升级通知中所携带的网络地址,进入下载界面。进入下载界面后,可以是应用程序自动去下载用于升级的子程序包,无需用户进行确认;也可以是用户点击确认升级按钮,向应用程序发出确认升级的操作指令后,再去下载所述用于升级的子程序包。
S103:将与所述用于升级的M个子程序包相对应的M个本地子程序包替换为所述用于升级的M个子程序包。
具体的,应用程序从服务器上下载完所有用于升级的M个子程序包后,获取这些用于升级的M个子程序包的标识符,例如:子程序包的名称或ID信息;将获取到的标识符与本地应用程序中的每个子程序包对应的标识符进行比对,得到所有本地子程序包中分别与所述用于升级的M个子程序包的标识符相同的M个本地子程序包;然后将本地得到的M个本地子程序包替换为从服务器上下载过来的对应的用于升级的M个子程序包,完成应用程序的升级。该应用程序的升级过程中,无需下载整个安装文件,只需对需要升级的部分子程序包进行下载并更新即可,不仅节省流量,而且缩短了应用程序进行升级时所耗费的时间。
在本发明实施例所描述的应用程序的升级方法中,应用程序接收服务器发送过来的升级通知,所述升级通知中携带有服务器提供给应用程序用于升级的M个子程序包的网络地址;根据所述网络地址下载用于升级的M个子程序包;将与用于升级的M个子程序包相对应的M个本地子程序包替换为所述用于升级的M个子程序包,其中,M个子程序包不是应用程序的全部子程序包,从而通过更新部分子程序包即可实现应用程序的升级。采用本发明实施例,可以节省用户给应用程序进行升级时所耗费的流量和时间。
请参见图2,图2是本发明实施例提供的一种应用程序的升级方法的另一流程示意图,在本发明实施例中,该方法包括以下步骤。
S201:应用程序向服务器发送升级应用程序的查询指令,所述查询指令携带有所述应用程序中所有子程序包的版本信息,所述版本信息包括子程序包的名称和版本号。
作为本发明的一种实施方式,所述应用程序可以是已模块化的应用程序,整个安装文件包括N个独立组件,每个组件对应一个子程序包。例如:JAVA子程序包,其中,N>1。换句话说,开发者在设计应用程序时,对整个应用程序进行模块化设计,每个模块对应一个组件,每个组件对应一个子程序包,应用程序包括多个独立组件,这些独立的组件通过各自提供的API接口(Application Programming Interface,应用程序编程接口)与其它组件进行数据交互。
具体的,开启应用程序时,应用程序自动获取本地所有子程序包的版本信息,并向服务器发送升级所述应用程序的查询指令,该查询指令包括应用程序在本地获取到的所有子程序包的版本信息,其中,版本信息包括子程序包的名称和版本号。以使服务器接收到该终端上的应用程序发送过来的查询指令后,根据查询指令中携带的版本信息与服务器中保存的所有子程序包的最新版本信息进行比对,若存在至少一个子程序包可以升级,则向该应用程序发送升级通知,提示用户是否需要升级应用程序,其中,升级通知中包括至少一个用于升级的子程序包的网络下载地址。为方便说明,假设存在M个子程序包可以升级,于是,所述网络地址加载有用于升级的M个子程序包,其中,N>M,M>0,N和M都为正整数。
S202:接收服务器发送过来的升级通知,所述升级通知中携带有网络地址,所述网络地址加载有用于升级的M个子程序包。
S203:基于WebView浏览器控件显示所述升级通知,并加载所述升级通知中所携带的网络地址。
S204:若接收到确认升级的操作指令,根据所述网络地址下载所述用于升级的M个子程序包。
例如:用户点击确认升级按钮,从而向应用程序发出确认升级的操作指令,则所述应用程序根据所述网络地址下载所述用于升级的M个子程序包。
S205:将与所述用于升级的M个子程序包相对应的M个本地子程序包替换为所述用于升级的M个子程序包。
具体的,应用程序从服务器上下载完所有用于升级的M个子程序包后,获取这些用于升级的M个子程序包的标识符,例如:子程序包的名称或ID信息。将获取到的标识符与本地应用程序中的每个子程序包对应的标识符进行比对,得到本地应用程序中与所述用于升级的M个子程序包相对应的M个本地子程序包。然后将本地得到的M个子程序包替换为从服务器上下载过来的用于升级的M个子程序包。
优选的,对从所述应用程序中获取到的与所述用于升级的M个子程序包相对应的M个本地子程序包进行备份,若应用程序升级失败,可以通过该备份的子程序包恢复到升级前的状态。
作为一种可能的实施方式,确定所述应用程序是否成功将所述M个本地子程序包替换为所述用于升级的M个子程序包,若是,表示升级成功;若否,表示升级失败。若升级失败,应用程序根据已备份的M个本地子程序包将所述应用程序恢复到未进行升级前的状态。
S206:输出应用程序的升级信息,所述升级信息包括升级结果和所述应用程序升级后所具有的新属性。
具体的,若升级成功,则输出升级成功的信息,并展示升级后的应用程序所具有的新属性,例如:新增加的功能或对原有功能进行的某些优化等。该应用程序的升级过程中,无需下载整个安装文件,只需对需要更新的部分子程序包进行下载并更新即可,不仅节省流量,而且缩短了应用程序进行升级时所耗费的时间。
在本发明实施例所描述的应用程序的升级方法中,应用程序接收服务器发送过来的升级通知,所述升级通知中携带有服务器提供给应用程序用于升级的M个子程序包的网络地址;根据所述网络地址下载用于升级的M个子程序包;将与用于升级的M个子程序包相对应的M个本地子程序包替换为所述用于升级的M个子程序包,其中,M个子程序包不是应用程序的全部子程序包,从而通过更新部分子程序包即可实现应用程序的升级。采用本发明实施例,可以节省用户给应用程序进行升级时所耗费的流量和时间。
请参见图3,图3是本发明实施例提供的一种应用程序的升级装置的结构示意图,在本发明实施例中,该装置包括:接收模块301、下载模块302和替换模块303。
接收模块301,用于接收服务器发送过来的升级通知,所述升级通知中携带有网络地址,所述网络地址加载有用于升级的M个子程序包,其中,所述应用程序包括N个子程序包,N和M为正整数,N>M,M>0。
作为本发明的一种实施方式,所述应用程序可以是已模块化的应用程序,整个安装文件包括N个独立组件,每个组件对应一个子程序包,例如:JAVA子程序包,其中,N>1。换句话说,开发者在设计应用程序时,对整个应用程序进行模块化设计,每个模块对应一个组件,每个组件对应一个子程序包,应用程序包括多个独立组件,这些独立的组件通过提供API(Application Programming Interface,应用程序编程接口)与其它组件进行数据交互。服务器发送过来的升级通知中加载有用于升级的M个子程序包的网络地址,其中,N和M为正整数,M<N,M>0。
下载模块302,用于根据所述网络地址下载所述用于升级的M个子程序包。
替换模块303,用于将与所述用于升级的M个子程序包相对应的M个本地子程序包替换为所述用于升级的M个子程序包。
在本发明实施例所描述的应用程序的升级装置中,应用程序接收服务器发送过来的升级通知,所述升级通知中携带有服务器提供给应用程序用于升级的M个子程序包的网络地址;根据所述网络地址下载用于升级的M个子程序包;将与用于升级的M个子程序包相对应的M个本地子程序包替换为所述用于升级的M个子程序包,其中,M个子程序包不是应用程序的全部子程序包,从而通过更新部分子程序包即可实现应用程序的升级。采用本发明实施例,可以节省用户给应用程序进行升级时所耗费的流量和时间。
请参见图4,图4是本发明实施例提供的一种应用程序的升级装置的另一结构示意图,在本发明实施例中,该装置包括:接收模块401、下载模块402、替换模块403、发送模块404、显示模块405、确定模块406和输出模块407。
接收模块401,用于接收服务器发送过来的升级通知,所述升级通知中携带有网络地址,所述网络地址加载有用于升级的M个子程序包,其中,所述应用程序包括N个子程序包,N和M为正整数,N>M,M>0。
下载模块402,用于根据所述网络地址下载所述用于升级的M个子程序包。
具体的,可以是应用程序接收到升级通知后,不显示该升级通知,下载模块402直接根据升级通知中携带的网络地址自动去下载用于升级的M个子程序包,无需用户进行确认,应用程序自动进行升级。
替换模块403,用于将与所述用于升级的M个子程序包相对应的M个本地子程序包替换为所述用于升级的M个子程序包。
发送模块404,用于向所述服务器发送升级所述应用程序的查询指令,所述查询指令携带有所述应用程序中所有子程序包的版本信息,以使所述服务器根据所述查询指令确定所述应用程序是否需要升级,若是,则给所述应用程序发送所述升级通知。
显示模块405,用于基于WebView浏览器控件显示所述升级通知,并加载所述升级通知中所携带的网络地址。
具体的,可以是应用程序接收到升级通知后,显示模块405基于WebView浏览器控件显示所述升级通知,并加载所述升级通知中所携带的网络地址,进入下载界面。进入下载界面后,可以是下载模块402自动去下载用于升级的子程序包,无需用户进行确认;也可以是用户点击确认升级按钮,向应用程序发出确认升级的操作指令后,下载模块402再去下载所述用于升级的M个子程序包。
确定模块406,用于确定所述应用程序是否成功将所述M个本地子程序包替换为所述用于升级的M个子程序包,若是,表示升级成功;若否,表示升级失败,根据已备份的M个本地子程序包将所述应用程序恢复到未进行升级前的状态。
输出模块407,用于输出所述应用程序的升级信息,所述升级信息包括升级结果和所述应用程序升级后所具有的新属性。
作为一种优选的实施方式,替换模块403包括:第一获取单元4031、第二获取单元4032、备份单元4033和替换单元4034。如图5所示,图5是图4提供的其中一种替换模块的结构示意图。
第一获取单元4031,用于获取所述用于升级的M个子程序包的标识符。
第二获取单元4032,用于根据所述用于升级的M个子程序包的标识符,获取所有本地子程序包中与所述标识符相同的M个本地子程序包。
备份单元4033,用于对所述M个本地子程序包进行备份。
替换单元4034,用于将所述M个本地子程序包替换为所述用于升级的M个子程序包。
在本发明实施例所描述的应用程序的升级装置中,应用程序接收服务器发送过来的升级通知,所述升级通知中携带有服务器提供给应用程序用于升级的M个子程序包的网络地址;根据所述网络地址下载用于升级的M个子程序包;将与用于升级的M个子程序包相对应的M个本地子程序包替换为所述用于升级的M个子程序包,其中,M个子程序包不是应用程序的全部子程序包,从而通过更新部分子程序包即可实现应用程序的升级。采用本发明实施例,可以节省用户给应用程序进行升级时所耗费的流量和时间。
请参见图6,图6是本发明实施例提供的一种应用程序的升级系统的结构示意图,在本发明实施例中,该系统包括:终端100和服务器200。终端100内安装有包括如上所述升级装置的应用程序,服务器200用于向终端100发送升级通知,以使终端上的应用程序根据所述升级通知进行升级。
作为本发明的一种实施方式,可以是服务器200获取终端100内该应用程序的所有子程序包的版本信息,服务器200根据终端100上获取到的版本信息和本地服务器中保存的该应用程序的最新版本信息确定终端100上的该应用程序是否有待升级的子程序包,若有,则服务器200向安装了该应用程序的终端100发送升级通知,提示用户是否需要升级应用程序,其中,升级通知中携带有网络地址,所述网络地址加载有用于升级的M个子程序包,M为大于零的正整数。假设该应用程序包括N个子程序包,N为正整数,则N>M。终端100内的应用程序接收到服务器200发送过来的升级通知后,根据升级通知中携带的网络地址去下载用于升级的M个子程序包,下载完所有用于升级的子程序包后,将本地对应的M个子程序包替换为从服务器200上下载过来的所述用于升级的M个子程序包,完成应用程序的升级。该应用程序的升级过程中,无需下载整个安装文件,只需对需要升级的部分子程序包进行下载并更新即可,不仅节省流量,而且缩短了应用程序进行升级时所耗费的时间。
在本发明实施例所描述的应用程序的升级系统中,终端上的应用程序接收服务器发送过来的升级通知,所述升级通知中携带有服务器提供给应用程序用于升级的M个子程序包的网络地址;根据所述网络地址下载用于升级的M个子程序包;将与用于升级的M个子程序包相对应的M个本地子程序包替换为所述用于升级的M个子程序包,其中,M个子程序包不是应用程序的全部子程序包,从而通过更新部分子程序包即可实现应用程序的升级。采用本发明实施例,可以节省用户给应用程序进行升级时所耗费的流量和时间。
本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
本发明实施例装置中的模块或单元可以根据实际需要进行合并、划分和删减。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。