掌桥专利:专业的专利平台
掌桥专利
首页

离线包版本的控制方法、系统、计算机设备及存储介质

文献发布时间:2023-06-19 10:32:14


离线包版本的控制方法、系统、计算机设备及存储介质

技术领域

本发明实施例涉及计算机软件领域,尤其涉及一种离线包版本的控制方法、系统、计算机设备及存储介质。

背景技术

目前很多公司开发一款React Native应用程序相应的功能需要Android和iOS工程师们使用Native代码分别开发Android和iOS 2个平台上的App,因此实现成本比较高,而且需要占用比较大的测试资源,并且App上线时必须按照提交审核,等待审核等步骤,最终App审核通过后用户才可以在相应的应用市场中看到App的更新状态,用户再手动安装App。这一过程耗时比较长,给用户体验App造成很大的困扰。并且由于应用程序的种类越来越多,应用程序的更新也越来越频繁。检测应用程序是否需要更新是助手类软件的必备功能之一,助手类软件可将移动终端中可更新的应用程序检测出,并向用户提示更新或将升级信息推送显示给用户,以使用户选择要更新的应用程序。但是应用程序也需要用户进行手动更新,更新效率低,不能给用户较好的体验。

发明内容

有鉴于此,本发明实施例的目的是提供一种离线包版本的控制方法、系统、计算机设备及存储介质,提高了版本更新的效率。

为实现上述目的,本发明实施例提供了一种离线包版本的控制方法,包括:

检测本地是否存在React Native应用的当前离线包;

当检测出存在所述当前离线包时,向服务端发起查询请求,以查询所述服务端是否有可用离线包;

当查询到所述服务端有可用离线包时,从所述服务端下载所述可用离线包;

对所述可用离线包进行解压与安全校验;

当所述可用离线包通过安全校验时,基于所述可用离线包对所述React Native应用进行更新。

进一步地,所述当检测出存在所述当前离线包时,向服务端发起查询请求,以查询所述服务端是否有可用离线包包括:

当检测出存在所述当前离线包时,向服务端发起携带有当前离线包的版本号的查询请求,以使所述服务端根据所述版本号判断是否存在所述可用离线包;

接收所述服务端返回的判断结果,并根据所述判断结果确定所述服务端是否有可用离线包。

进一步地,所述当检测出存在所述当前离线包时,向服务端发起查询请求,以查询所述服务端是否有可用离线包包括:

所述服务端根据所述查询请求判断是否存在所述React Native应用的目标离线包,当所述服务端存在所述目标离线包时,生成携带有所述目标离线包的目标版本号的响应信息;

接收到所述服务端返回的所述响应信息;

获取所述当前离线包的版本号;

根据所述响应信息中的所述目标版本号与所述当前离线包的版本号,判断所述服务端是否有可用离线包。

进一步地,所述根据所述响应信息中的所述目标版本号与所述当前离线包的版本号,判断所述服务端是否有可用离线包包括:

判断所述目标版本号是否大于所述当前离线包的版本号;

当所述目标版本号大于所述版本号时,则将所述目标离线包作为所述可用离线包。

进一步地,所述当检测出存在所述当前离线包时,向服务端发起查询请求,以查询所述服务端是否有可用离线包之后,还包括:

当所述服务端无所述可用离线包,且所述服务端将所述React Native应用的当前离线包设置为不可用时,将本地的所述当前离线包设置为不可用。

进一步地,所述方法还包括:

若所述服务端无所述可用离线包,则加载所述当前离线包,以安装所述ReactNative应用。

进一步地,所述基于所述可用离线包对所述React Native应用进行更新之前,还包括:

对所述可用离线包进行预加载。

为实现上述目的,本发明实施例提供了一种离线包版本的控制系统,包括:

检测模块,用于检测本地是否存在React Native应用的当前离线包;

查询模块,用于当检测出存在所述当前离线包时,向服务端发起查询请求,以查询所述服务端是否有可用离线包;

下载模块,用于当查询到所述服务端有可用离线包时,从所述服务端下载所述可用离线包;

校验模块,用于对所述可用离线包进行解压与安全校验;

更新模块,用于当所述可用离线包通过安全校验时,基于所述可用离线包对所述React Native应用进行更新。

为实现上述目的,本发明实施例提供了一种计算机设备,所述计算机设备包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的离线包版本的控制方法的步骤。

为实现上述目的,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器上所述的离线包版本的控制方法的步骤。

本发明实施例提供的离线包版本的控制方法、系统、计算机设备及存储介质,在用户进入应用进行应用安装时,通过自动对React Native应用的当前离线包进行检测,并发送查询请求给服务端进行版本的查询,当服务端有可用离线包存在时,则继续下载并加载可用离线包,若没有则加载当前离线包,以对React Native应用的版本更新进行灵活控制,提升了React Native应用的更新效率,进而提升了用户的体验感。

附图说明

图1为本发明离线包版本的控制方法实施例一的流程图。

图2为本发明离线包版本的控制方法实施例一中步骤S120的第一实施例的流程图。

图3为本发明离线包版本的控制方法实施例一中步骤S120的第二实施例的流程图。

图4为本发明离线包版本的控制系统实施例二的程序模块示意图。

图5为本发明计算机设备实施例三的硬件结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

参阅图1,示出了本发明实施例一之离线包版本的控制方法的步骤流程图。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。下面以计算机设备2为执行主体进行示例性描述。具体如下。

步骤S100,检测本地是否存在React Native应用的当前离线包。

具体地,React Native应用的离线包通过React Native框架进行构建,当用户进行React Native应用使用或者打开React Native应用时,自动检测本地内存中是否存在下载好的当前离线包,本地是指计算机设备或者终端。由于React Native框架中有大量诸如SegmentedControlIOS、PermissionsAndroid这样针对特定平台的API接口,可以在多端运行一致。而React Native应用的离线包是通过React Native框架进行编写的,因此兼容了iOS和Android,实现一套代码可以在2个平台上运行,达到了跨平台的目的。React-Native是一组开源项目,React-Native是由FaceBook开源的一个跨平台移动应用的开发框架,它能在JavaScript(一种解释性脚本语言,代码不需要进行预编译即可被运行)中用React(一种设计思想)抽象操作系统元素的用户接口组件,代替文档对象模型进行渲染,利用React-Native开发应用为开发者们提供了便利。React-Native应用可以是各种类型的React-Native应用,包括但不限于游戏类React-Native应用、影音娱乐类React-Native应用、实用工具类React-Native应用以及社交通信类React-Native应用等。

步骤S120,当检测出存在所述当前离线包时,向服务端发起查询请求,以查询所述服务端是否有可用离线包。

具体地,可用离线包表示在服务端中,存在React Native应用的目标离线包并且该目标离线包的版本号大于本地的当前离线包的当前版本号的离线包。当检测出本地存在React Native应用的当前离线包时,向服务端查询是否有最新的离线包;当检测出本地不存在React Native应用的当前离线包时,也向服务端查询是否有的离线包,若查询出服务端有可用离线包,则进一步判断是否下载并加载可用离线包,以展示React Native应用。若本地和服务端都没有React Native应用的离线包,则标记React Native应用不可用。

在示例性地实施例中,参阅图2,所述步骤S120的第一实施例具体包括:

步骤S120 A,当检测出存在所述当前离线包时,向服务端发起携带有当前离线包的版本号的查询请求,以使所述服务端根据所述版本号判断是否存在所述可用离线包。

具体地,服务端接收到查询请求时,根据React Native应用的应用标识在进行查询是否有匹配的离线包,若有匹配的候选离线包,将当前离线包的版本号与候选离线包的版本号进行比较,生成判断结果。若候选离线包的版本号大于当前离线包的版本包,则判断结果为有可用离线包;若候选离线包的版本号小于或等于当前离线包的版本包,或者无React Native应用的离线包,则判断结果为无可用离线包。

步骤S120B,接收所述服务端返回的判断结果,并根据所述判断结果确定所述服务端是否有可用离线包。

具体地,接收服务端返回的判断结果,当判断结果为有可用离线包时,则确定服务端有可用离线包;当判断结果为无可用离线包时,则确定服务端无可用离线包。

在示例性地实施例中,参阅图3,所述步骤S120的第二实施例具体包括:

步骤S121,当检测出存在所述当前离线包时,向服务端发起查询请求,以使所述服务端根据所述查询请求判断是否存在所述React Native应用的目标离线包,当所述服务端存在所述目标离线包时,生成携带有所述目标离线包的目标版本号的响应信息。

具体地,当本地存在当前离线包时,向服务端发起携带有React Native应用的应用标识的查询请求,若服务端存在React Native应用的目标离线包时,生成携带有目标离线包的目标版本号的响应信息。若服务端不存在目标离线包,则返回的响应信息为不存在可用离线包。

步骤S122,接收到所述服务端返回的所述响应信息。

具体地,接收服务端返回的响应信息,并获取响应信息中的目标离线包的目标版本号。

步骤S123,获取所述当前离线包的版本号。

具体地,当存在目标版本包时,获取当前离线包的版本号以进行判断。

步骤S124,根据所述响应信息中的所述目标版本号与所述当前离线包的版本号,判断所述服务端是否有可用离线包。

在示例性地实施例中,所述步骤S124具体包括:

步骤S124A,判断所述目标版本号是否大于所述当前离线包的版本号。

步骤S124B,当所述目标版本号大于所述版本号时,则将所述目标离线包作为所述可用离线包。

具体地,当目标版本号大于当前离线包的版本号,则判断服务端是有可用离线包;当目标版本号小于当前离线包的版本号,则判断服务端是无可用离线包。

在示例性地实施例中,所述步骤S120之后,还包括:

当所述服务端无所述可用离线包,且所述服务端将所述React Native应用的当前离线包设置为不可用时,将本地的所述当前离线包设置为不可用。

具体地,若服务端不存在有React Native应用的离线包,且服务端将ReactNative应用的当前离线包标记为不可用时,将不可用标记同步标记到本地的当前离线包,并提示用户React Native应用的当前离线包不可用。若服务端不存在React Native应用对应的离线包,则加载React Native应用的当前离线包以安装应用。

步骤S140,当查询到所述服务端有可用离线包时,从所述服务端下载所述可用离线包。

具体地,当查询到服务端有可用离线包,接收通过服务端传输的目标离线包,并下载到应用的当前离线包的存储目录下。为了防止目标离线包在传输过程中被人恶意修改离线包,导致React Native应用无法正常运行,因此需要在服务端对需要下载的目标离线包进行文件Hash或签名校验,以保证传输的安全性。如果本地内存下载时对目标离线包的检验通过,则开始下载,以保证从服务端下载的目标离线包的合法性,并确保React Native应用的稳定运行。

步骤S160,对所述可用离线包进行解压与安全校验。

具体地,可用离线包在下载时,对可用离线包进行了加密处理,加密处理方式不限于对可用离线包文件Hash或签名等。下载完成后,通过对可用离线包进行解压并同步实现安全校验,可以一边解压一边校验,可以在可用离线包安装成功之前,对可用离线包进行预加载。解压时需要对解压的文件进行哈希校验,保证下载的文件的安全性,若解密成功则加载可用离线包,若解密不成功,则将该可用离线包进行删除。还可以通过服务端的文件hash值与本地预存的文件hash值进行比较确定服务端的离线包中的源码文件是否完整,如果两端文件hash值相同,则确定可用离线包的源码文件为完整;如果两端文件hash值不相同,则停止更新。

步骤S180,当所述可用离线包通过安全校验时,基于所述可用离线包对所述ReactNative应用进行更新。

具体地,如果可用离线包通过校验,则解压并安装可用离线包。如果下载的可用离线包无法通过检验,则说明此可用离线包出现问题,将该可用离线包删除,防止其恶意行为影响React Native应用的运行稳定,并且退出当前的安装流程。

在示例性地实施例中,所述方法还包括:若所述服务端无所述可用离线包,则加载所述当前离线包,以安装所述React Native应用。

具体地,当服务端无可用离线包时,加载React Native应用的本地的当前离线包以安装React Native应用。

在示例性地实施例中,所述步骤S160之前,还包括:

对所述可用离线包进行预加载。

具体地,由于加载可用离线包需要一定的时间,为了React Native应用具有更好的体验,需要对解压的可用离线包进行预加载,当页面需要显示时,页面可以直接快速地呈现给用户。如果React Native应用需要展示相应的功能,将预加载好的页面快速直接的显示,从而达到近似Natvie App的性能。

实施例二

请继续参阅图4,示出了本发明离线包版本的控制系统实施例二的程序模块示意图。在本实施例中,离线包版本的控制系统20可以包括或被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本发明,并可实现上述离线包版本的控制方法。本发明实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,比程序本身更适合于描述离线包版本的控制系统20在存储介质中的执行过程。以下描述将具体介绍本实施例各程序模块的功能:

检测模块200,用于检测本地是否存在React Native应用的当前离线包。

具体地,React Native应用的离线包通过React Native框架进行构建,当用户进行React Native应用使用或者打开React Native应用时,自动检测本地内存中是否存在下载好的当前离线包。由于React Native框架中有大量诸如SegmentedControlIOS、PermissionsAndroid这样针对特定平台的API接口,可以在多端运行一致。而React Native应用的离线包是通过React Native框架进行编写的,因此兼容了iOS和Android,实现一套代码可以在2个平台上运行,达到了跨平台的目的。

查询模块202,用于当检测出存在所述当前离线包时,向服务端发起查询请求,以查询所述服务端是否有可用离线包。

具体地,可用离线包表示在服务端中,存在React Native应用的目标离线包并且该目标离线包的版本号大于本地的当前离线包的当前版本号的离线包。当检测出本地存在React Native应用的当前离线包时,向服务端查询是否有最新的离线包;当检测出本地不存在React Native应用的当前离线包时,也向服务端查询是否有的离线包,若查询出服务端有可用离线包,则进一步判断是否下载并加载可用离线包,以展示React Native应用。若本地和服务端都没有React Native应用的离线包,则标记React Native应用不可用。

在示例性地实施例中,所述查询模块202具体用于:

当检测出存在所述当前离线包时,向服务端发起携带有当前离线包的版本号的查询请求,以使所述服务端根据所述版本号判断是否存在所述可用离线包。

具体地,服务端接收到查询请求时,根据React Native应用的应用标识在进行查询是否有匹配的离线包,若有匹配的候选离线包,将当前离线包的版本号与候选离线包的版本号进行比较,生成判断结果。若候选离线包的版本号大于当前离线包的版本包,则判断结果为有可用离线包;若候选离线包的版本号小于或等于当前离线包的版本包,或者无React Native应用的离线包,则判断结果为无可用离线包。

接收所述服务端返回的判断结果,并根据所述判断结果确定所述服务端是否有可用离线包。

具体地,接收服务端返回的判断结果,当判断结果为有可用离线包时,则确定服务端有可用离线包;当判断结果为无可用离线包时,则确定服务端无可用离线包。

在示例性地实施例中,所述查询模块202还用于:

当检测出存在所述当前离线包时,向服务端发起查询请求,以使所述服务端根据所述查询请求判断是否存在所述React Native应用的目标离线包,当所述服务端存在所述目标离线包时,生成携带有所述目标离线包的目标版本号的响应信息。

具体地,当本地存在当前离线包时,向服务端发起携带有React Native应用的应用标识的查询请求,若服务端存在React Native应用的目标离线包时,生成携带有目标离线包的目标版本号的响应信息。若服务端不存在目标离线包,则返回的响应信息为不存在可用离线包。

接收到所述服务端返回的所述响应信息。

具体地,接收服务端返回的响应信息,并获取响应信息中的目标离线包的目标版本号。

获取所述当前离线包的版本号。

具体地,当存在目标版本包时,获取当前离线包的版本号以进行判断。

根据所述响应信息中的所述目标版本号与所述当前离线包的版本号,判断所述服务端是否有可用离线包。

在示例性地实施例中,所述查询模块202进一步用于:

判断所述目标版本号是否大于所述当前离线包的版本号。

当所述目标版本号大于所述版本号时,则将所述目标离线包作为所述可用离线包。

具体地,当目标版本号大于当前离线包的版本号,则判断服务端是有可用离线包;当目标版本号小于当前离线包的版本号,则判断服务端是无可用离线包。

下载模块204,用于当查询到所述服务端有可用离线包时,从所述服务端下载所述可用离线包。

具体地,当查询到服务端有可用离线包,接收通过服务端传输的目标离线包,并下载到应用的当前离线包的存储目录下。为了防止目标离线包在传输过程中被人恶意修改离线包,导致React Native应用无法正常运行,因此需要在服务端对需要下载的目标离线包进行文件Hash或签名校验,以保证传输的安全性。如果本地内存下载时对目标离线包的检验通过,则开始下载,以保证从服务端下载的目标离线包的合法性,并确保React Native应用的稳定运行。

校验模块206,用于对所述可用离线包进行解压与安全校验。

具体地,可用离线包在下载时,对可用离线包进行了加密处理,加密处理方式不限于对可用离线包文件Hash或签名等。下载完成后,通过对可用离线包进行解压并同步实现安全校验,解压时需要对解压的文件进行哈希校验,保证下载的文件的安全性,若解密成功则加载可用离线包,若解密不成功,则将该可用离线包进行删除。还可以通过服务端的文件hash值与本地预存的文件hash值进行比较确定服务端的离线包中的源码文件是否完整,如果两端文件hash值相同,则确定可用离线包的源码文件为完整;如果两端文件hash值不相同,则停止更新。

更新模块208,用于当所述可用离线包通过安全校验时,基于所述可用离线包对所述React Native应用进行更新。

具体地,如果可用离线包通过校验,则解压并安装可用离线包。如果下载的可用离线包无法通过检验,则说明此可用离线包出现问题,将该可用离线包删除,防止其恶意行为影响React Native应用的运行稳定,并且退出当前的安装流程,提升了React Native应用的整体稳定性和健壮性。

实施例三

参阅图5,是本发明实施例三之计算机设备的硬件架构示意图。本实施例中,所述计算机设备2是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。该计算机设备2可以是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图5所示,所述计算机设备2至少包括,但不限于,可通过系统总线相互通信连接存储器21、处理器22、网络接口23、以及离线包版本的控制系统20。其中:

本实施例中,存储器21至少包括一种类型的计算机可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器21可以是计算机设备2的内部存储单元,例如该计算机设备2的硬盘或内存。在另一些实施例中,存储器21也可以是计算机设备2的外部存储设备,例如该计算机设备2上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器21还可以既包括计算机设备2的内部存储单元也包括其外部存储设备。本实施例中,存储器21通常用于存储安装于计算机设备2的操作系统和各类应用软件,例如实施例二的离线包版本的控制系统20的程序代码等。此外,存储器21还可以用于暂时地存储已经输出或者将要输出的各类数据。

处理器22在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器22通常用于控制计算机设备2的总体操作。本实施例中,处理器22用于运行存储器21中存储的程序代码或者处理数据,例如运行离线包版本的控制系统20,以实现实施例一的离线包版本的控制方法。

所述网络接口23可包括无线网络接口或有线网络接口,该网络接口23通常用于在所述服务器2与其他电子装置之间建立通信连接。例如,所述网络接口23用于通过网络将所述服务器2与外部终端相连,在所述服务器2与外部终端之间的建立数据传输通道和通信连接等。所述网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System of Mobile communication,GSM)、宽带码分多址(Wideband CodeDivision Multiple Access,WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。需要指出的是,图5仅示出了具有部件20-23的计算机设备2,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。

在本实施例中,存储于存储器21中的所述离线包版本的控制系统20还可以被分割为一个或者多个程序模块,所述一个或者多个程序模块被存储于存储器21中,并由一个或多个处理器(本实施例为处理器22)所执行,以完成本发明。

例如,图4示出了所述实现离线包版本的控制系统20实施例二的程序模块示意图,该实施例中,所述离线包版本的控制系统20可以被划分为所述检测模块200、所述查询模块202、所述下载模块204、所述检验模块206以及所述更新模块208。其中,本发明所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,比程序更适合于描述所述离线包版本的控制系统20在所述计算机设备2中的执行过程。所述程序模块200-208的具体功能在实施例二中已有详细描述,在此不再赘述。

实施例四

本实施例还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,程序被处理器执行时实现相应功能。本实施例的计算机可读存储介质用于计算机程序,被处理器执行时实现实施例一的离线包版本的控制方法。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

相关技术
  • 离线包版本的控制方法、系统、计算机设备及存储介质
  • 离线语音控制方法、系统、可读存储介质及计算机设备
技术分类

06120112587891