一种在ios系统中进行应用热更新的方法和装置与流程

文档序号:13760211阅读:247来源:国知局
一种在ios系统中进行应用热更新的方法和装置与流程

本发明涉及网络技术领域,尤其涉及一种在ios系统中进行应用热更新的方法和装置。



背景技术:

对于已发版的应用,iOS系统采用技术手段禁止对其进行动态更新(即热更新),当开发者需要对所述应用进行更新时,现有的方案是将重新编译生成的完整的应用提交到苹果服务器,等待苹果服务器经过漫长的审核,当审核通过后,用户重新下载安装该应用以更新该应用。

由于苹果服务器审核周期特别长,需要付出巨大的时间成本才能完成特定应用的修复或者功能更新。

因此,如何提供一种无需经过苹果服务器的漫长审核过程并且能够对不同系统版本进行兼容的ios系统应用热更新方法成为本领域技术人员亟需解决的问题之一。



技术实现要素:

本发明的目的是提供一种在用户设备的ios系统中进行应用热更新的方法和装置。

根据本发明的一个方面,提供一种在用户设备的ios系统中进行应用热更新的方法,其中,该方法包括以下步骤:

应用加载器将对应的网络设备所下发的、针对特定应用的应用更新脚本加载至用户设备的内存中,其中,所述应用更新脚本根据所述用户设备的系统版本确定;

根据所述系统版本,执行所述应用更新脚本,以对所述特定应用进行应用热更新。

优选地,所述根据所述系统版本,执行所述应用更新脚本,以对所述特定应用进行应用热更新的步骤包括:

若所述系统版本高于等于版本阈值,直接执行所述应用更新脚本,以对所述特定应用进行应用热更新。

若所述系统版本低于所述版本阈值,对所述应用更新脚本进行解释转换,并执行经所述解释转换后的所述应用更新脚本,以对所述特定应用进行应用热更新。

优选地,在用户设备的ios系统中进行应用热更新的方法还包括:

检测更新后的所述特定应用是否能够正常运行;

若不能够,根据加载所述应用更新脚本的路径,反向加载所述应用更新脚本。

优选地,所述应用更新脚本被加密,其中,在用户设备的ios系统中进行应用热更新的方法还包括:

对被加密的所述应用更新脚本进行解密,以获得解密后的应用更新脚本;

其中,所述根据所述系统版本,执行所述应用更新脚本,以对所述特定应用进行应用热更新的步骤包括:

根据所述系统版本,执行所述解密后的应用更新脚本,以对所述特定应用进行应用热更新。

优选地,在用户设备的ios系统中进行应用热更新的方法还包括:

对所述解密后的应用更新脚本进行安全性校验,以获得安全的应用更新脚本;

其中,所述根据所述系统版本,执行所述应用更新脚本,以对所述特定应用进行应用热更新的步骤包括:

根据所述系统版本,执行所述安全的应用更新脚本,以对所述特定应用进行应用热更新。

优选地,所述应用加载器中的头文件、库文件和资源文件被打包在一起。

根据本发明的一个方面,提供了一种在网络设备中辅助实现ios系统中进行应用热更新的方法,其中,该方法包括以下步骤:

获取对应的用户设备的系统版本;

根据所述系统版本,确定针对所述用户设备中特定应用的应用更新脚本;

向所述用户设备下发所述应用更新脚本。

优选地,该方法还包括:

对所述应用更新脚本进行加密,以获得加密后的应用更新脚本;

其中,所述向所述用户设备下发所述应用更新脚本的步骤包括:

向所述用户设备下发所述加密后的应用更新脚本。

根据本发明的另一个方面,还提供了一种的在用户设备的ios系统中进行应用热更新的第一更新装置,其中,该第一更新装置包括以下装置:

用于通过应用加载器将对应的网络设备所下发的、针对特定应用的应用更新脚本加载至用户设备的内存中的装置,其中,所述应用更新脚本根据所述用户设备的系统版本确定;

用于根据所述系统版本,执行所述应用更新脚本,以对所述特定应用进行应用热更新的装置。

优选地,所述用于根据所述系统版本,执行所述应用更新脚本,以对所述特定应用进行应用热更新的装置包括:

用于若所述系统版本高于等于版本阈值,直接执行所述应用更新脚本,以对所述特定应用进行应用热更新的单元。

用于若所述系统版本低于所述版本阈值,对所述应用更新脚本进行解释转换,并执行经所述解释转换后的所述应用更新脚本,以对所述特定应用进行应用热更新的单元。

优选地,该第一更新装置还包括:

用于检测更新后的所述特定应用是否能够正常运行的装置;

用于若不能够,根据加载所述应用更新脚本的路径,反向加载所述应用更新脚本的装置。

优选地,所述应用更新脚本被加密,其中,该第一更新装置还包括:

用于对被加密的所述应用更新脚本进行解密,以获得解密后的应用更新脚本的装置;

其中,用于所述根据所述系统版本,执行所述应用更新脚本,以对所述特定应用进行应用热更新的装置包括:

用于根据所述系统版本,执行所述解密后的应用更新脚本,以对所述特定应用进行应用热更新的单元。

优选地,该第一更新装置还包括:

用于对所述解密后的应用更新脚本进行安全性校验,以获得安全的应用更新脚本的装置;

其中,所述用于根据所述系统版本,执行所述应用更新脚本,以对所述特定应用进行应用热更新的装置包括:

用于根据所述系统版本,执行所述安全的应用更新脚本,以对所述特定应用进行应用热更新的单元。

优选地,所述应用加载器中的头文件、库文件和资源文件被打包在一起。

根据本发明的另一个方面,提供了一种在网络设备中辅助实现ios系统中进行应用热更新的第二更新装置,其中,该第二更新装置包括以下装置:

用于获取对应的用户设备的系统版本的装置;

用于根据所述系统版本,确定针对所述用户设备中特定应用的应用更新脚本的装置;

用于向所述用户设备下发所述应用更新脚本的装置。

优选地,该第二更新装置还包括:

用于对所述应用更新脚本进行加密,以获得加密后的应用更新脚本的装置;

其中,所述用于向所述用户设备下发所述应用更新脚本的装置包括:

用于向所述用户设备下发所述加密后的应用更新脚本的单元。

与现有技术相比,本发明具有以下优点:

本发明采用将网络设备根据用户设备的系统版本下发至用户设备的对应的更新脚本加载至用户设备的内存中的技术方案,直接更新内存中的应用程序,无需经过苹果服务器的审核,缩短了应用程序更新的时间,提高了用户的使用体验,并且根据不同的用户设备系统版本采用不同的应用更新脚本,解决了不同系统版本热更新方案的兼容性问题,有效降低了插件开发联调成本,提升了插件的可扩展性和稳定性。

进一步地,本发明还在现有实现基础上增加了方法反加载机制,传输中的安全加密策略和安全性校验机制,提升了应用更新的安全性。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1示出第一更新装置1与第二更新装置2共同完成在用户设备的ios系统中进行应用热更新的更新装置示意图;

图2示出第一更新装置1与第二更新装置2共同完成在用户设备的ios系统中进行应用热更新的方法流程示意图。

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。

在上下文中所称“计算机设备”,也称为“电脑”,是指可以通过运行预定程序或指令来执行数值计算和/或逻辑计算等预定处理过程的智能电子设备,其可以包括处理器与存储器,由处理器执行在存储器中预存的存续指令来执行预定处理过程,或是由ASIC、FPGA、DSP等硬件执行预定处理过程,或是由上述二者组合来实现。计算机设备包括但不限于服务器、个人电脑、笔记本电脑、平板电脑、智能手机等。

所述计算机设备包括用户设备与网络设备。其中,所述用户设备包括但不限于电脑、智能手机、PDA等;所述网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(Cloud Computing)的由大量计算机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。其中,所述计算机设备可单独运行来实现本发明,也可接入网络并通过与网络中的其他计算机设备的交互操作来实现本发明。其中,所述计算机设备所处的网络包括但不限于互联网、广域网、城域网、局域网、VPN网络等。

需要说明的是,所述用户设备、网络设备和网络等仅为举例,其他现有的或今后可能出现的计算机设备或网络如可适用于本发明,也应包含在本发明保护范围以内,并以引用方式包含于此。

后面所讨论的方法(其中一些通过流程图示出)可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或者其任意组合来实施。当用软件、固件、中间件或微代码来实施时,用以实施必要任务的程序代码或代码段可以被存储在机器或计算机可读介质(比如存储介质)中。(一个或多个)处理器可以实施必要的任务。

这里所公开的具体结构和功能细节仅仅是代表性的,并且是用于描述本发明的示例性实施例的目的。但是本发明可以通过许多替换形式来具体实现,并且不应当被解释成仅仅受限于这里所阐述的实施例。

应当理解的是,虽然在这里可能使用了术语“第一”、“第二”等等来描述各个单元,但是这些单元不应当受这些术语限制。使用这些术语仅仅是为了将一个单元与另一个单元进行区分。举例来说,在不背离示例性实施例的范围的情况下,第一单元可以被称为第二单元,并且类似地第二单元可以被称为第一单元。这里所使用的术语“和/或”包括其中一个或更多所列出的相关联项目的任意和所有组合。

应当理解的是,当一个单元被称为“连接”或“耦合”到另一单元时,其可以直接连接或耦合到所述另一单元,或者可以存在中间单元。与此相对,当一个单元被称为“直接连接”或“直接耦合”到另一单元时,则不存在中间单元。应当按照类似的方式来解释被用于描述单元之间的关系的其他词语(例如“处于...之间”相比于“直接处于...之间”,“与...邻近”相比于“与...直接邻近”等等)。

这里所使用的术语仅仅是为了描述具体实施例而不意图限制示例性实施例。除非上下文明确地另有所指,否则这里所使用的单数形式“一个”、“一项”还意图包括复数。还应当理解的是,这里所使用的术语“包括”和/或“包含”规定所陈述的特征、整数、步骤、操作、单元和/或组件的存在,而不排除存在或添加一个或更多其他特征、整数、步骤、操作、单元、组件和/或其组合。

还应当提到的是,在一些替换实现方式中,所提到的功能/动作可以按照不同于附图中标示的顺序发生。举例来说,取决于所涉及的功能/动作,相继示出的两幅图实际上可以基本上同时执行或者有时可以按照相反的顺序来执行。

下面结合附图对本发明作进一步详细描述。

图1示出第一更新装置1与第二更新装置2共同完成在用户设备的ios系统中进行应用热更新的更新装置示意图。

第一更新装置1通过网络与第二更新装置2进行交互通信,共同完成在用户设备的ios系统中进行应用热更新。第一更新装置1包括:1)用于通过应用加载器将对应的网络设备所下发的、针对特定应用的应用更新脚本加载至用户设备的内存中的装置,以下简称加载装置101,其中,所述应用更新脚本根据所述用户设备的系统版本确定;2)用于根据所述系统版本,执行所述应用更新脚本,以对所述特定应用进行应用热更新的装置,以下简称执行装置102。第二更新装置2包括:1)用于获取对应的用户设备的系统版本的装置,以下简称获取装置201;2)用于根据所述系统版本,确定针对所述用户设备中特定应用的应用更新脚本的装置,以下简称确定装置202;3)用于向所述用户设备下发所述应用更新脚本的装置,以下简称下发装置203。

在此,第一更新装置1位于用户设备中,第一更新装置1包括的加载装置101和执行装置102也位于该用户设备中,该用户设备包括但不限于个人电脑、便携式电脑、平板电脑、智能手机、PDA等采用ios系统的用户设备,例如可以是iPhone、iPod touch、iPad或Apple TV等。在此,iOS是由苹果公司开发的移动操作系统,属于类Unix的商业操作系统。第二更新装置2位于网络设备中,第二更新装置2包括的获取装置201、确定装置202和下发装置203也位于该网络设备中。本领域技术人员应能理解上述用户设备仅为举例,现有的或者今后可能出现的用户设备如可适用于本发明也应包含在本发明保护范围内,并以引用的方式包含于此。

其中,第二更新装置2中的获取装置201获取对应的用户设备的系统版本。具体地,用户开启安装在用户设备上的特定应用程序后,向网络设备询问是否有更新版本,若存在更新版本,则网络设备通过获取装置201例如发送获取版本请求至用户设备中,用户设备收到所述请求之后向网络设备发送系统版本信息;获取装置201通过一次或者多次调用用户设备系统提供的应用程序接口(API)获取用户设备的系统版本或者用户设备主动上报系统版本,然后由获取装置201获取该系统版本。例如,用户开启使用ios7系统的用户设备中的某一团购应用程序,所述应用程序向网络设备询问是否有更新版本,若有更新版本,获取装置201通过请求用户设备告知其系统版本或者通过自己查询获得用户设备的系统版本为ios7。

本领域技术人员应能理解,上述获取用户设备的系统版本的方法仅为举例,现有的或者今后可能出现的获取用户设备的系统版本的方法如可适用于本发明,都应包含在本发明的保护范围内,并在此以引用的方式包含于此。

确定装置202根据所述系统版本,确定针对所述用户设备中特定应用的应用更新脚本。具体地,若网络设备通过获取装置201获取到所述系统版本为ios7,则确定装置202根据该系统版本确定使用ios7的用户设备中与特定应用对应的应用更新脚本。例如,当用户设备的系统版本为ios7时,网络设备中针对ios7这一版本号中的特定应用程序采用的更新方案为:用iOS内置的JavaScriptCore.framework作为JS引擎,通过Objective-C Runtime,从JS传递要调用的类名函数名到Objective-C,再使用NSInvocation动态调用对应的OC方法。确定装置202确定将向用户设备下发的特定应用的应用更新脚本为适用于上述更新方案的针对ios7的应用更新脚本。

在此,网络设备的确定装置202首先确定用户设备的系统版本,针对不同的系统版本,确定对应于该系统版本的特定应用的应用更新脚本,进而向用户设备下发根据系统版本确定的应用更新脚本,降低了脚本开发的联调成本,提升了脚本的课扩展性和稳定性,解决了不同系统版本热更新方案的兼容性问题。

本领域技术人员应能理解,上述用户设备的系统版本为ios7仅为举例,用户设备的版本号也可以为ios7以上或者ios6及以下,根据不同的系统版本采用不同的更新方案,只要是通过确定版本号,对不同的版本采用不同的更新脚本的技术方案都应包含在本发明保护范围内,并在此以引用的方式包含于此。

下发装置203向所述用户设备下发所述应用更新脚本。具体地,获取装置201获取对应的用户设备的系统版本,并且确定装置202根据所述系统版本确定所述用户设备中特定应用对应的应用更新脚本,在向用户设备下发所述应用更新脚本之前,下发装置203根据用户设备的设置首先查询所述用户设备的联网状态,若用户设备设置为:仅在WIFI连接状态下接收应用更新脚本,则下发装置203首先查询所述用户设备是否为WIFI连接状态,如果是,则下发装置203通过将所述用户设备的信息和所述应用更新脚本进行打包等方式将所述应用更新脚本下发至所述用户设备。例如,用户设备被设置为当用户设备连接至WIFI或者其他无线网络时接收网络设备下发的更新脚本,下发装置203检测到用户设备正连接于运营商移动网络时,则不向所述用户设备下发所述应用更新脚本,当下发装置203检测到用户设备正连接于某一WIFI网络时,向所述用户设备下发包括应用更新脚本和用户设备的设备标识等信息的应用包。

在此,第二更新装置2通过获取装置201获取到用户设备的系统版本后,确定装置202根据所述系统版本确定即将下发至用户设备的特定应用的应用更新脚本,然后由下发装置203将所述应用更新脚本下发至位于用户设备中的第一更新装置1中,与第一更新装置1的加载装置101和执行装置102共同完成在用户设备的ios系统中进行应用热更新。

加载装置101通过应用加载器将对应的网络设备所下发的、针对特定应用的应用更新脚本加载至用户设备的内存中,其中,所述应用更新脚本根据所述用户设备的系统版本确定。具体地,用户开启安装在用户设备上的特定应用程序后,网络设备通过获取装置201获取所述用户设备的系统版本,根据获取到的所述用户设备的系统版本,确定装置202确定针对所述用户设备中特定应用的应用更新脚本,下发装置203向用户设备下发针对安装在所述用户设备中的特定应用的应用更新脚本,所述应用程序脚本适用于所述用户设备的系统版本,加载装置101通过应用加载器将所述应用更新脚本加载至用户设备的内存中。例如,用户开启安装在用户设备上的特定应用程序后,查询网络设备是否存在所述特定应用程序的更新脚本,若网络上设备存在所述特定应用程序的更新脚本,向网络设备发送想要接收更新脚本的请求,网络设备检测所述用户设备的系统版本,若所述用户设备的系统版本为ios7及以上系统,网络设备向用户设备下发适用于ios7及以上系统的针对用户设备特定应用的更新脚本,所述网络设备例如通过Javascript语言完成脚本动态下发;若所述用户设备的系统版本为ios6及以下系统,网络设备向用户设备下发适用于ios6及以下系统的针对用户设备特定应用的更新脚本,所述网络设备例如通过Lua语言完成脚本动态下发,加载装置101通过加载器将所述针对用户设备特定应用的更新脚本加载至用户设备的内存中。

在此,加载装置101将网络设备根据用户设备的系统版本下发至用户设备的对应的更新脚本加载至用户设备的内存中,直接更新内存中的应用程序,无需经过苹果服务器的审核,缩短了应用程序更新的时间,提高了用户的使用体验。并且加载装置101加载至用户设备内存中的所述更新脚本是根据用户设备的系统版本确定的,解决了不同系统版本热更新方案的兼容性问题。

优选地,上述应用加载器可以是所述特定应用中的加载器,例如在下载安装该特定应用时自带的加载器;也可以是其他应用的加载器,该特定应用与其他应用可以共用一个加载器,当所述特定应用程序需要加载更新脚本或者其他插件时,对该加载器进行授权然后该加载器加载所述更新脚本或者其他插件至用户设备的内存中。优选地,所述应用加载器中的头文件、库文件和资源文件被打包在一起。

本领域技术人员应能理解上述加载器的类型仅为举例,现有的或者今后可能出现的加载器的类型如可适用于本发明都应包含在本发明保护范围内,并在此以引用的方式包含于此。

执行装置102根据所述系统版本,执行所述应用更新脚本,以对所述特定应用进行应用热更新。具体地,当用户设备通过加载装置101将针对特定应用的应用更新脚本加载至用户设备的内存中后,其中,所述应用更新脚本是由对应的网络设备下发的,加载装置101通过应用加载器将该应用更新脚本加载至用户设备的内存中,执行装置102根据所述用户设备系统版本的高低,采用不同的方法执行应用更新脚本,对所述特定应用进行应用热更新。例如,用户开启安装于用户设备的某一即时通信工具后,加载装置101通过该即时通信工具自带的应用加载器将针对该即时通信工具的应用更新脚本加载至该用户设备的内存中,直接在内存中更新即时通信工具的对应脚本,若所述用户设备的系统版本为ios7及以上版本,执行装置102直接执行所述应用更新脚本,无需经过编译解释的过程,完成对该即时通信工具的应用热更新。

在此,当用户设备的ios系统中的特定应用程序执行更新操作时,无需经过苹果服务器的漫长审核周期,即可将所述特定应用程序进行应用热更新,提高了用户的使用体验。

优选地,执行装置102包括:1)用于若所述系统版本高于等于版本阈值,直接执行所述应用更新脚本,以对所述特定应用进行应用热更新的单元,以下简称第一执行单元(未示出);2)用于若所述系统版本低于所述版本阈值,对所述应用更新脚本进行解释转换,并执行经所述解释转换后的所述应用更新脚本,以对所述特定应用进行应用热更新的单元,以下简称解释单元(未示出)。

若所述系统版本高于等于版本阈值,第一执行单元直接执行所述应用更新脚本,以对所述特定应用进行应用热更新。具体地,预先设置一版本阈值,例如,该版本阈值设置为ios7,针对系统版本为ios7或者高于ios7的用户设备,应用更新脚本通过以下方案实现:用iOS内置的JavaScriptCore.framework作为JS引擎,通过Objective-C Runtime,从JS传递要调用的类名函数名到Objective-C,再使用NSInvocation动态调用对应的OC方法,因为JavaScriptCore.framework仅支持ios7及以上系统,因此不适用于ios6及以下版本。加载装置101通过应用加载器将该应用更新脚本加载至用户设备的内存中后,执行装置102首先将所述用户设备的系统版本与版本阈值ios7进行比较,如果所述系统版本为ios7或者ios7以上版本时,无需对所述应用更新脚本进行编译解释,第一执行单元直接在用户设备内存中执行所述应用更新脚本,实现对所述特定应用的应用热更新。

若所述系统版本低于所述版本阈值,解释单元对所述应用更新脚本进行解释转换,并执行经所述解释转换后的所述应用更新脚本,以对所述特定应用进行应用热更新。具体地,预先设置一版本阈值,例如,该版本阈值设置为ios6,针对系统版本为ios6或者低于ios6的用户设备,应用更新脚本采用Lua+Objc Runtime方案,通过Lua语言代替Javascript语言完成更新脚本动态下发。加载装置101通过应用加载器将该应用更新脚本加载至用户设备的内存中后,执行装置102首先将所述用户设备的系统版本与版本阈值ios7进行比较,如果所述系统版本为ios6或者ios6以下版本时,解释单元需要通过例如解析器将上述应用更新脚本进行解析,解释转换成可执行文件,并执行经所述解释转换后的所述应用更新脚本,以对所述特定应用进行应用热更新。

在此,本发明所述由第一更新装置装置1通过网络与第二更新装置2进行交互通信共同完成在用户设备的ios系统中进行应用热更新的更新装置根据不同的用户设备系统版本采用不同的应用更新脚本,对于ios7及以上系统,采用JavaScriptCore.framework作为JS引擎完成应用更新脚本,对于ios6及以下版本退化成Lua+ObjC Runtime方案,以Lua语言代替Javascript语言完成脚本动态下发,保证方案完备性,解决了ios6及一下版本的方案兼容性问题。

优选地,第一更新装置1还包括:1)用于检测更新后的所述特定应用是否能够正常运行的装置,以下简称检测装置(未示出);2)用于若不能够,根据加载所述应用更新脚本的路径,反向加载所述应用更新脚本的装置,以下简称反向加载装置(未示出)。

其中,检测装置检测更新后的所述特定应用是否能够正常运行。具体地,执行装置102完成对特定应用进行的应用热更新以后,检测装置需要检测被更新后的特定应用能否正常运行,或者检测所述特定应用经过应用热更新之后存在的问题是否解决了特定应用中存在的问题,或者是否给所述特定应用带来更大的问题,如果被更新后的特定应用能正常运行,并且没有给所述特定应用带来更大的问题,则不做其他处理。若检测装置检测被更新后的特定应用之后,发现所述特定应用不能正常运行,或者经过热更新之后的特定应用出现了更大的问题,则所述反加载装置根据加载所述应用更新脚本的路径,反向加载所述应用更新脚本,即,撤销掉上述加载过程,使所述应用程序恢复到原先的未进行过热更新的状态。

在此,本发明能够记住加载应用更新脚本的路径,并且,在现有实现基础上增加了方法反加载机制,对于具有更大bug的热更新或者更新之后应用系统不能正常使用的情况可以使用反加载机制,撤销所述加载过程,防止不成熟更新脚本给现有特定应用带来更大的缺陷而影响用户的使用体验,保证用户对所述特定应用的正常使用。

优选地,所述第二更新装置2还包括:用于对所述应用更新脚本进行加密,以获得加密后的应用更新脚本的装置,以下简称加密装置(未示出);其中,所述下发装置203包括:用于向所述用户设备下发所述加密后的应用更新脚本的单元,以下简称下发单元(未示出)。

加密装置对所述应用更新脚本进行加密,以获得加密后的应用更新脚本。具体地,为了保证用户设备的特定应用能够安全的进行更新,防止所述应用更新脚本在由网络设备下发至用户设备的过程中被恶意第三方截取并植入网络病毒,在使用例如Javascript语言或者Lua语言按照开发规范开发应用脚本之后,在下发装置203执行下发操作之前,通过对称密钥或者非对称密钥等加密方法对所述应用更新脚本进行加密,获得加密后的应用更新脚本,以保证应用更新脚本在网络中的安全传输。下发装置203中的下发单元对上述经过加密后的应用更新脚本进行下发操作。

在此,在开发完本发明所述特定应用脚本后,对所述特定应用更新脚本进行打包加密,保证应用更新脚本在传输过程中的安全性。

优选地,上述应用更新脚本被加密,其中,第一更新装置1还包括:用于对被加密的所述应用更新脚本进行解密,以获得解密后的应用更新脚本的装置,以下简称解密装置(未示出);其中,所述执行装置102包括:用于根据所述系统版本,执行所述解密后的应用更新脚本,以对所述特定应用进行应用热更新的单元,以下简称第二执行单元(未示出)。

解密装置对被加密的所述应用更新脚本进行解密,以获得解密后的应用更新脚本。具体地,加载装置101通过应用加载器将该加密后的应用更新脚本加载至用户设备的内存中后,首先需要解密装置按照加密规则和密钥进行解密,获得解密后的原始应用更新脚本,然后执行装置102中的第二执行单元根据系统版本,判断直接执行所述解密后的应用更新脚本,以对所述特定应用进行应用热更新还是通过解析器的编译解释之后对所述特定应用进行应用热更新。

优选地,第一更新装置1还包括:用于对所述解密后的应用更新脚本进行安全性校验,以获得安全的应用更新脚本的装置,以下简称校验装置(未示出);其中,执行装置102包括:用于根据所述系统版本,执行所述安全的应用更新脚本,以对所述特定应用进行应用热更新的单元,以下简称第三执行单元(未示出)。

校验装置对所述解密后的应用更新脚本进行安全性校验,以获得安全的应用更新脚本。具体地,校验装置对由解密装置解密后的应用更新脚本进行安全性校验,例如,包括地址校验,对发送更新脚本的报文的报头中的源端口地址和目的端口地址采用配对的方式进行地址校验,过滤掉源端地址和目的端地址不匹配的报文;或者通过检测方法校验所述解密装置中是否存在恶意添加的木马程序或者钓鱼程序等危害用户设备使用安全的程序,若存在这样的程序,则校验装置通过与该用户设备的交互,如一次或多次调用用户设备应用提供的应用程序接口(AP I)等方式调用用户设备的杀毒程序或者其他清理工具,将上述危害用户设备安全的程序进行清除处理,或者重新加载网络设备下发的应用更新脚本,以获得安全的应用更新脚本。然后执行装置102的第三执行单元根据所述系统版本,执行通过校验装置校验并确定安全之后的应用更新脚本,完成对特定应用的应用热更新。

在此,第一更新装置1将网络设备根据用户设备的系统版本下发至用户设备的对应的更新脚本加载至用户设备的内存中,直接更新内存中的应用程序,无需经过苹果服务器的审核,缩短了应用程序更新的时间,提高了用户的使用体验,并且根据不同的用户设备系统版本采用不同的应用更新脚本,解决了不同系统版本热更新方案的兼容性问题,有效降低了插件开发联调成本,提升了插件的可扩展性和稳定性。本发明还在现有实现基础上增加了方法反加载机制,传输中的安全加密策略和安全性校验机制,提升了应用更新的安全性。

图2示出第一更新装置1与第二更新装置2共同完成在用户设备的ios系统中进行应用热更新的方法流程示意图。

第一更新装置1通过网络与第二更新装置2进行交互通信,共同完成在用户设备的ios系统中进行应用热更新。其中,在步骤S1中,第二更新装置2获取对应的用户设备的系统版本。具体地,用户开启安装在用户设备上的特定应用程序后,向网络设备询问是否有更新版本,若存在更新版本,则在步骤S1中,网络设备通过第二更新装置2例如发送获取版本请求至用户设备中,用户设备收到所述请求之后向网络设备发送系统版本信息;第二更新装置2通过一次或者多次调用用户设备系统提供的应用程序接口(API)获取用户设备的系统版本或者用户设备主动上报系统版本,然后在步骤S1中,由第二更新装置2获取该系统版本。例如,用户开启使用ios7系统的用户设备中的某一团购应用程序,所述应用程序向网络设备询问是否有更新版本,若有更新版本,第二更新装置2通过请求用户设备告知其系统版本而获得所述系统版本为ios7或者通过自己查询获得用户设备的系统版本为ios7。

本领域技术人员应能理解,上述获取用户设备的系统版本的方法仅为举例,现有的或者今后可能出现的获取用户设备的系统版本的方法如可适用于本发明,都应包含在本发明的保护范围内,并在此以引用的方式包含于此。

在步骤S2中,第二更新装置2根据所述系统版本,确定针对所述用户设备中特定应用的应用更新脚本。具体地,若网络设备在步骤S1中获取到所述系统版本为ios7,则在步骤S2中,第二更新装置2根据该系统版本确定使用ios7的用户设备中与特定应用对应的应用更新脚本。例如,当用户设备的系统版本为ios7时,网络设备中针对使用ios7的用户设备中的特定应用程序采用的更新方案为:用iOS内置的JavaScriptCore.framework作为JS引擎,通过Objective-C Runtime,从JS传递要调用的类名函数名到Objective-C,再使用NSInvocation动态调用对应的OC方法。在步骤S2中,第二更新装置2确定将向用户设备下发的特定应用的应用更新脚本为适用于上述更新方案的针对ios7的应用更新脚本。

在此,在步骤S2中,位于网络设备的第二更新装置2首先确定用户设备的系统版本,针对不同的系统版本,确定对应于该系统版本的特定应用的应用更新脚本,进而向用户设备下发根据系统版本确定的应用更新脚本,降低了脚本开发的联调成本,提升了脚本的课扩展性和稳定性,解决了不同系统版本热更新方案的兼容性问题。

本领域技术人员应能理解,上述用户设备的系统版本为ios7仅为举例,用户设备的版本号也可以为ios7以上或者ios6及以下,根据不同的系统版本采用不同的更新方案,只要是通过确定版本号,对不同的版本采用不同的更新脚本的技术方案都应包含在本发明保护范围内,并在此以引用的方式包含于此。

在步骤S3中,第二更新装置2向所述用户设备下发所述应用更新脚本。具体地,在步骤S1中,第二更新装置2获取对应的用户设备的系统版本,并且在步骤S2中,第二更新装置2根据所述系统版本确定所述用户设备中特定应用对应的应用更新脚本,在向用户设备下发所述应用更新脚本之前,在步骤S3中,第二更新装置2根据用户设备的设置首先查询所述用户设备的联网状态,若用户设备设置为:仅在WIFI连接状态下接收应用更新脚本,则在步骤S3中,第二更新装置2首先查询所述用户设备是否为WIFI连接状态,如果是,则在步骤S3中,第二更新装置2通过将所述用户设备的信息和所述应用更新脚本进行打包等方式将所述应用更新脚本下发至所述用户设备。例如,用户设备被设置为当用户设备连接至WIFI或者其他无线网络时接收网络设备下发的更新脚本,在步骤S3中,第二更新装置2检测到用户设备正连接于运营商移动网络时,则不向所述用户设备下发所述应用更新脚本,当在步骤S3中,第二更新装置2检测到用户设备正连接于某一WIFI网络时,向所述用户设备下发包括应用更新脚本和用户设备的设备标识等信息的应用包。

在此,第二更新装置2通过步骤S1获取到用户设备的系统版本后,在步骤S2中,第二更新装置2根据所述系统版本确定即将下发至用户设备的特定应用的应用更新脚本,然后在步骤S1中,由第二更新装置2将所述应用更新脚本下发至位于用户设备中的第一更新装置1中,与第一更新装置1共同完成在用户设备的ios系统中进行应用热更新。

在步骤S4中,第一更新装置1通过应用加载器将对应的网络设备所下发的、针对特定应用的应用更新脚本加载至用户设备的内存中,其中,所述应用更新脚本根据所述用户设备的系统版本确定。具体地,用户开启安装在用户设备上的特定应用程序后,网络设备通过第一更新装置1在步骤S1中获取所述用户设备的系统版本,根据获取到的所述用户设备的系统版本,在步骤S2中,第一更新装置2确定针对所述用户设备中特定应用的应用更新脚本,在步骤S3中,第一更新装置2向用户设备下发针对安装在所述用户设备中的特定应用的应用更新脚本,所述应用程序脚本适用于所述用户设备的系统版本,在步骤S4中,第一更新装置1通过应用加载器将所述应用更新脚本加载至用户设备的内存中。例如,用户开启安装在用户设备上的特定应用程序后,查询网络设备是否存在所述特定应用程序的更新脚本,若网络上设备存在所述特定应用程序的更新脚本,向网络设备发送想要接收更新脚本的请求,网络设备检测所述用户设备的系统版本,若所述用户设备的系统版本为ios7及以上系统,网络设备向用户设备下发适用于ios7及以上系统的针对用户设备特定应用的更新脚本,所述网络设备例如通过Javascript语言完成脚本动态下发;若所述用户设备的系统版本为ios6及以下系统,网络设备向用户设备下发适用于ios6及以下系统的针对用户设备特定应用的更新脚本,所述网络设备例如通过Lua语言完成脚本动态下发,在步骤S4中,第一更新装置1通过加载器将所述针对用户设备特定应用的更新脚本加载至用户设备的内存中。

在此,在步骤S4中,第一更新装置1将网络设备根据用户设备的系统版本下发至用户设备的对应的更新脚本加载至用户设备的内存中,直接更新内存中的应用程序,无需经过苹果服务器的审核,缩短了应用程序更新的时间,提高了用户的使用体验。并且在步骤S4中,第一更新装置1加载至用户设备内存中的所述更新脚本是根据用户设备的系统版本确定的,解决了不同系统版本热更新方案的兼容性问题。

优选地,上述应用加载器可以是所述特定应用中的加载器,例如在下载安装该特定应用时自带的加载器;也可以是其他应用的加载器,该特定应用与其他应用可以共用一个加载器,当所述特定应用程序需要加载更新脚本或者其他插件时,对该加载器进行授权然后该加载器加载所述更新脚本或者其他插件至用户设备的内存中。优选地,所述应用加载器中的头文件、库文件和资源文件被打包在一起。

本领域技术人员应能理解上述加载器的类型仅为举例,现有的或者今后可能出现的加载器的类型如可适用于本发明都应包含在本发明保护范围内,并在此以引用的方式包含于此。

在步骤S5中,第一更新装置1根据所述系统版本,执行所述应用更新脚本,以对所述特定应用进行应用热更新。具体地,当用户设备通过第一更新装置1在步骤S4中将针对特定应用的应用更新脚本加载至用户设备的内存中后,其中,所述应用更新脚本是由对应的网络设备下发的,在步骤S4中,第一更新装置1通过应用加载器将该应用更新脚本加载至用户设备的内存中,在步骤S5中,第一更新装置1根据所述用户设备系统版本的高低,采用不同的方法执行应用更新脚本,对所述特定应用进行应用热更新。例如,用户开启安装于用户设备的某一即时通信工具后,在步骤S4中,第一更新装置1通过该即时通信工具自带的应用加载器将针对该即时通信工具的应用更新脚本加载至该用户设备的内存中,直接在内存中更新即时通信工具的对应脚本,若所述用户设备的系统版本为ios7及以上版本,在步骤S5中,第一更新装置1直接执行所述应用更新脚本,无需经过编译解释的过程,完成对该即时通信工具的应用热更新。

在此,当用户设备的ios系统中的特定应用程序执行更新操作时,无需经过苹果服务器的漫长审核周期,即可将所述特定应用程序进行应用热更新,提高了用户的使用体验。

优选地,步骤S5包括子步骤S51(未示出)和子步骤S52(未示出)。

在子步骤S51中,若所述系统版本高于等于版本阈值,第一更新装置1直接执行所述应用更新脚本,以对所述特定应用进行应用热更新。具体地,预先设置一版本阈值,例如,该版本阈值设置为ios7,针对系统版本为ios7或者高于ios7的用户设备,应用更新脚本通过以下方案实现:用iOS内置的JavaScriptCore.framework作为JS引擎,通过Objective-C Runtime,从JS传递要调用的类名函数名到Objective-C,再使用NSInvocation动态调用对应的OC方法,因为JavaScriptCore.framework仅支持ios7及以上系统,因此不适用于ios6及以下版本。在步骤S4中,第一更新装置1通过应用加载器将该应用更新脚本加载至用户设备的内存中后,在步骤S5中,第一更新装置1首先将所述用户设备的系统版本与版本阈值ios7进行比较,如果所述系统版本为ios7或者ios7以上版本时,无需对所述应用更新脚本进行编译解释,在子步骤S51中,第一更新装置1直接在用户设备内存中执行所述应用更新脚本,实现对所述特定应用的应用热更新。

在子步骤S52中,若所述系统版本低于所述版本阈值,第一更新装置1对所述应用更新脚本进行解释转换,并执行经所述解释转换后的所述应用更新脚本,以对所述特定应用进行应用热更新。具体地,预先设置一版本阈值,例如,该版本阈值设置为ios6,针对系统版本为ios6或者低于ios6的用户设备,应用更新脚本采用Lua+Objc Runtime方案,通过Lua语言代替Javascript语言完成更新脚本动态下发。在步骤S4中,第一更新装置1通过应用加载器将该应用更新脚本加载至用户设备的内存中后,在步骤S5中,第一更新装置1首先将所述用户设备的系统版本与版本阈值ios7进行比较,如果所述系统版本为ios6或者ios6以下版本时,在子步骤S51中,第一更新装置1需要通过例如解析器将上述应用更新脚本进行解析,解释转换成可执行文件,并执行经所述解释转换后的所述应用更新脚本,以对所述特定应用进行应用热更新。

在此,本发明所述由第一更新装置1通过网络与第二更新装置2进行交互通信共同完成在用户设备的ios系统中进行应用热更新的方法根据不同的用户设备系统版本采用不同的应用更新脚本,对于ios7及以上系统,采用JavaScriptCore.framework作为JS引擎完成应用更新脚本,对于ios6及以下版本退化成Lua+ObjC Runtime方案,以Lua语言代替Javascript语言完成脚本动态下发,保证方案完备性,解决了ios6及以下版本的方案兼容性问题。

优选地,该方法还包括步骤S6和S7。在步骤S6中,第一更新装置1检测更新后的所述特定应用是否能够正常运行;若不能够,在步骤S7中,第一更新装置1根据加载所述应用更新脚本的路径,反向加载所述应用更新脚本。

其中,在步骤S6中,第一更新装置1检测更新后的所述特定应用是否能够正常运行。具体地,在步骤S7中,第一更新装置1完成对特定应用进行的应用热更新以后,在步骤S6中,第一更新装置1需要检测被更新后的特定应用能否正常运行,或者检测所述特定应用经过应用热更新之后存在的问题是否解决了特定应用中存在的问题,或者是否给所述特定应用带来更大的问题,如果被更新后的特定应用能正常运行,并且没有给所述特定应用带来更大的问题,则不做其他处理。在步骤S6中,若第一更新装置1检测被更新的特定应用之后,发现所述特定应用不能正常运行,或者经过热更新之后的特定应用出现了更大的问题,则在步骤S7中,第一更新装置1根据加载所述应用更新脚本的路径,反向加载所述应用更新脚本,即,撤销掉上述加载过程,使所述应用程序恢复到原先的未进行过热更新的状态。

在此,本发明能够记住加载应用更新脚本的路径,并且,在现有实现基础上增加了方法反加载机制,对于具有更大bug的热更新或者更新之后应用系统不能正常使用的情况可以使用反加载机制,撤销所述加载过程,防止不成熟更新脚本给现有特定应用带来更大的缺陷而影响用户的使用体验,保证用户对所述特定应用的正常使用。

优选地,该方法还包括步骤S8(未示出),在步骤S8中,第二更新装置2对所述应用更新脚本进行加密,以获得加密后的应用更新脚本;其中,步骤S3还包括子步骤S31(未示出),在子步骤S31中,第二更新装置2向所述用户设备下发所述加密后的应用更新脚本。

在步骤S8中,第二更新装置2对所述应用更新脚本进行加密,以获得加密后的应用更新脚本。具体地,为了保证用户设备的特定应用能够安全的进行更新,防止所述应用更新脚本在由网络设备下发至用户设备的过程中被恶意第三方截取并植入网络病毒,在使用例如Javascript语言或者Lua语言按照开发规范开发应用脚本之后,在第二更新装置2执行步骤S3之前,在步骤S8中,第二更新装置2通过对称密钥或者非对称密钥等加密方法对所述应用更新脚本进行加密,获得加密后的应用更新脚本,以保证应用更新脚本在网络中的安全传输。在子步骤S31中,第二更新装置2对上述经过加密后的应用更新脚本进行下发操作。

在此,在开发完本发明所述特定应用脚本后,对所述特定应用更新脚本进行打包加密,保证应用更新脚本在传输过程中的安全性。

优选地,上述应用更新脚本被加密,其中,该方法还包括步骤S9,在步骤S9中,第一更新装置1对被加密的所述应用更新脚本进行解密,以获得解密后的应用更新脚本;其中,步骤S5还包括子步骤S52(未示出),在子步骤S52中,第一更新装置1根据所述系统版本,执行所述解密后的应用更新脚本,以对所述特定应用进行应用热更新。

在步骤S9中,第一更新装置1对被加密的所述应用更新脚本进行解密,以获得解密后的应用更新脚本。具体地,在步骤S4中,第一更新装置1通过应用加载器将该加密后的应用更新脚本加载至用户设备的内存中后,首先需要第一更新装置1在步骤S9中按照加密规则和密钥进行解密,获得解密后的原始应用更新脚本,然后在子步骤S52中,第一更新装置1根据系统版本,判断直接执行所述解密后的应用更新脚本,以对所述特定应用进行应用热更新还是通过解析器的编译解释之后对所述特定应用进行应用热更新。

优选地,该方法还包括步骤S10,在步骤S10中,第一更新装置1对所述解密后的应用更新脚本进行安全性校验,以获得安全的应用更新脚本;其中,步骤S5包括子步骤S53(未示出),在子步骤S53中,第一更新装置1根据所述系统版本,执行所述安全的应用更新脚本,以对所述特定应用进行应用热更新。

在步骤S10中,第一更新装置1对所述解密后的应用更新脚本进行安全性校验,以获得安全的应用更新脚本。具体地,在步骤S10中,第一更新装置1对由在步骤S9解密后的应用更新脚本进行安全性校验,例如,包括地址校验,对发送更新脚本的报文的报头中的源端口地址和目的端口地址采用配对的方式进行地址校验,过滤掉源端地址和目的端地址不匹配的报文;或者通过检测方法校验所述解密后的信息中是否存在恶意添加的木马程序或者钓鱼程序等危害用户设备使用安全的程序,若存在这样的程序,则在步骤S10中,第一更新装置1通过与该用户设备的交互,如一次或多次调用用户设备应用提供的应用程序接口(API)等方式调用用户设备的杀毒程序或者其他清理工具,将上述危害用户设备安全的程序进行清除处理,或者重新加载网络设备下发的应用更新脚本,以获得安全的应用更新脚本。然后在子步骤S53中,第一更新装置1根据所述系统版本,执行通过校验并确定安全之后的应用更新脚本,完成对特定应用的应用热更新。

在此,第一更新装置1将网络设备根据用户设备的系统版本下发至用户设备的对应的更新脚本加载至用户设备的内存中,直接更新内存中的应用程序,无需经过苹果服务器的审核,缩短了应用程序更新的时间,提高了用户的使用体验,并且根据不同的用户设备系统版本采用不同的应用更新脚本,解决了不同系统版本热更新方案的兼容性问题,有效降低了插件开发联调成本,提升了插件的可扩展性和稳定性。本发明还在现有实现基础上增加了方法反加载机制,传输中的安全加密策略和安全性校验机制,提升了应用更新的安全性。

需要注意的是,本发明可在软件和/或软件与硬件的组合体中被实施,例如,本发明的各个装置可采用专用集成电路(ASIC)或任何其他类似硬件设备来实现。在一个实施例中,本发明的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本发明的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本发明的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

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