混合APP应用程序的资源更新方法及系统与流程

文档序号:14990212发布日期:2018-07-20 22:04阅读:214来源:国知局
本发明涉及网络通信
技术领域
,尤其涉及一种适用于移动客户端的混合app应用程序的资源更新方法及系统。
背景技术
:随着移动网络技术的发展,移动客户端app应用程序飞速成为终端上的主流程序。用户可以使用各个网络服务提供商的app应用程序,与对应的服务端进行通信,来实现该网络服务提供商的各项业务。具体而言,用户通过在app应用程序内开启各个页面来与服务端进行交互,完成获取业务信息、启动和控制业务过程、提交业务数据等各个流程。在app不同类型中,有一种类型的app被称为混合app应用程序,该种app是指app内容通过html5(hypertextmarkuplanguagelanguage5,超文本标记语言第5版,简称h5)技术来实现的,同时h5技术可调用移动平台原生api。其可以实现在不更新app的情况下,可以让移动用户及时获取app中的最新内容,极大地提升开发效率和降低维护成本。混合app与原生app通过开发所使用的技术不同来区分:混合app通过原生态的开发语言(ios系统为objectc、android系统为java)+h5一起开发的,h5可以调用原生态的开发语言页面中的接口,原生态的开发语言也可以调用h5页面中的接口。原生app通过纯原生态的开发语言开发的app,不存在与h5页面相互调用。参考图1,现有混合app应用程序的资源请求模式示意图。由于设置于移动客户端11的混合app应用程序111需要在web中运行h5的内容,一些较大的资源(例如图片、样式表等)必须通过网关12从服务端端13获取。混合app应用程序111需要通过网关12向服务端13发起资源请求,并接收服务端13通过网关12返回的资源。这样就有可能存在请求响应延时或超时的情况,请求页面空白、卡顿等,对app的使用流畅度、响应速度、运行性能等方面都有影响,也导致用户体验不佳。技术实现要素:本发明的目的在于,提供一种适用于移动客户端的混合app应用程序的资源更新方法及系统,其通过将所有请求资源整体为一资源包,当混合app应用程序运行时该资源包以热更新方式安装并在移动客户端的app沙盒中运行,当混合app应用程序向服务端请求资源时,直接从本地app沙盒中获取,而不必从服务端请求,有效地解决现有技术中混合app应用程序中应用对资源请求存在延时或超时的问题,从而提升操作性能,并且该种方法具有响应速度快且节省流量等特点。为实现上述目的,本发明提供了一种混合app应用程序的资源更新方法,适用于移动客户端,包括以下步骤:(a)启动安装于移动客户端中的混合app应用程序,并且获取用户标识信息;(b)检查当前静态化资源包的版本信息与服务端的最新静态化资源包的版本信息是否一致,并在判定版本信息不一致时,从服务端获取最新静态化资源包;(c)部署所述最新静态化资源包至所述移动客户端的app沙盒中;(d)启动所述app沙盒中的所述最新静态化资源包中的静态资源界面,并且与服务端进行跨域通讯,根据所述用户标识信息完成用户权限认证,以从服务端获取界面所需的业务数据。为实现上述目的,本发明还提供了一种混合app应用程序的资源更新系统,适用于移动客户端,包括设置于移动客户端的app启动模块、版本检查模块、资源包下载模块、app沙盒、资源包部署模块以及web视图模块;所述app启动模块,用于启动安装于移动客户端中的混合app应用程序,并且获取用户标识信息;所述版本检查模块,用于检查当前静态化资源包的版本信息与服务端的最新静态化资源包的版本信息是否一致,并在判定版本信息不一致时调用所述资源包下载模块从服务端获取最新静态化资源包;所述资源包部署模块,用于部署所述最新静态化资源包至所述app沙盒中;所述web视图模块,用于启动所述app沙盒中的所述最新静态化资源包中的静态资源界面,并且与服务端进行跨域通讯,根据所述用户标识信息完成用户权限认证,以从服务端获取界面所需的业务数据本发明的优点在于,通过将资源做静态化处理,使得所有资源文件均在混合app应用程序的app沙盒中;当请求资源时,无需通过任何网络请求,即使在无网络的环境下也能及时响应请求的资源,从而对混合app应用程序的使用流畅度、响应速度、运行性能等方面都有很大提升,用户体验也随之得到极大改善。附图说明图1,现有混合app应用程序的资源请求模式示意图;图2,本发明所述的混合app应用程序的资源更新方法的流程示意图;图3,静态化资源包生成方式示意图;图4,静态化资源包热更新流程示意图;图5,跨域请求数据通讯认证流程示意图;图6,本发明所述的混合app应用程序的资源更新系统的架构示意图;图7,本发明所述的混合app应用程序的资源更新系统的最新静态化资源包获取流程示意图;图8,本发明所述的混合app应用程序的资源更新系统的跨域请求业务数据及通讯认证流程示意图。具体实施方式下面结合附图对本发明提供的混合app应用程序的资源更新方法及系统的具体实施方式做详细说明。参考图2,本发明所述的混合app应用程序的资源更新方法的流程示意图。所述的混合app应用程序的资源更新方法,适用于移动客户端,包括以下步骤:s21:启动安装于移动客户端中的混合app应用程序,并且获取用户标识信息;s22:检查当前静态化资源包的版本信息与服务端的最新静态化资源包的版本信息是否一致,并在判定版本信息不一致时,从服务端获取最新静态化资源包;s23:部署所述最新静态化资源包至所述移动客户端的app沙盒中;s24:启动所述app沙盒中的所述最新静态化资源包中的静态资源界面,并且与服务端进行跨域通讯,根据所述用户标识信息完成用户权限认证,以从服务端获取界面所需的业务数据;以下结合附图对上述步骤做详细说明。s21:启动安装于移动客户端中的混合app应用程序,并且获取用户标识信息。页面和页面所关联的图片、样式表、脚本等统称为资源。用户需要进行混合app应用程序的资源更新时,先打开混合app应用程序,混合app应用程序会获取用户标识信息,以用于后续进行用户权限认证。用户标识信息具体是指用户的身份标识,此标识用于用户登录和权限控制,如用户的账号名。s22:检查当前静态化资源包的版本信息与服务端的最新静态化资源包的版本信息是否一致,并在判定版本信息不一致时,从服务端获取最新静态化资源包。静态化资源包包含如下内容:图片文件、css样式表文件、javascript脚本文件、html页面文件。参考图3,静态化资源包生成方式示意图。其中,资源包管理员,用于发出静态化所有资源指令;静态化资源请求处理器设置于服务器端中,用于接收静态化所有资源指令,并返回静态化资源包;资源静态化器设置于服务器端中,用于进行资源静态化并生成静态化资源包;静态化资源列表包含在服务器端的资源池中,而资源池包含了需静态化的资源列表中的所有内容。具体的,静态化资源包生成包括以下步骤:1)将所有资源均放到一个主目录中,通过不同的子目录来区分不同资源内容,所述资源包括服务端动态页面文件、样式表文件、图片文件以及脚本文件。具体的,项目开发时将服务端动态页面文件、所需的样式表文件、图片文件、javascript脚本文件等,均放在到一个主目录中,通过不同的子目录来区分不同资源,如主目录为mobile,页面路径为page,图片目录为img等。2)配置需要静态化的资源的静态化资源列表及资源目录清单。静态化资源列表是资源包解压后的静态化资源目录清单。3)根据所述静态化资源列表,通过http协议将服务端动态页面内容输出成html静态页面,并拷贝所述html静态页面中引用的图片文件、样式表文件、脚本文件至服务端的相应存储路径。具体的,可以在服务端创建资源静态化器,此静态化器根据配置的静态化资源列表,将动态页面内容通过http协议请求输出成html文件,并将html中引用的图片、样式表、javascript脚本的绝对路径替换为相对路径。4)生成当前资源文件的版本信息。5)将所述html静态页面、所述资源目录清单中相应的资源文件以及当前资源文件的版本信息进行打包压缩,以形成静态化资源包。具体的,将输出的html文件、配置的资源目录清单中相应的资源文件和当前资源文件的版本信息,通过zip工具包压缩打包为最终静态化资源包。通过上述步骤实现了资源静态化,之后可以进行静态化资源包正确性检查:在pc端解压该资源资源包,通过浏览器打开静态html,页面展示效果和动态页面运行在服务器上的效果是否一致。暂时效果一致后,将静态化资源包整体提交到native开发包中,最终和native代码一起打包为app安装文件。混合app应用程序打开后,会先检查当前静态化资源包是否为最新版。若已是最新版,则继续进行后续流程,若不是最新版本,则需要获取最新版本。具体的,将当前静态化资源包的版本信息与服务端的最新静态化资源包的版本信息进行比较,若不一致,则通过网关转发一静态化资源包请求指令至服务端,并接收服务端返回的最新静态化资源包;若一致,则当前静态化资源包即为最新静态化资源包。所述最新静态化资源包进一步采用以下方式获取:1)服务端根据所述静态化资源包请求指令生成一打包请求;2)服务端根据所述打包请求从服务端的资源池中获取最新资源列表;3)服务端根据所述最新资源列表,将相应的资源文件进行静态化处理后进行打包压缩形成最新静态化资源包;4)服务端更新打包压缩后的最新静态化资源包的版本信息。参考图4,静态化资源包热更新流程示意图。具体的,因静态化资源打包在app安装文件中,若资源包本身有更新时,就需要对资源包进行热更新,即不用重新下载整个app,只需下载更新资源包,也无需重新安装。具体实现方案如下:将最新的静态资源打包,并更新资源包中资源版本号;在移动客户端的app沙盒每次请求服务端业务数据时,检查app沙盒中资源包版本号和当前服务端中的资源包版本号大小;若服务端的版本号大,则提示用户下载资源包;移动客户端下载完资源包后,将app沙盒内资源包替换为最新资源包。s23:部署所述最新静态化资源包至所述移动客户端的app沙盒中。获取到最新静态化资源包后,混合app应用程序会将最新静态化资源包部署到app沙盒中,最终将资源包中启动页返回到web视图。具体的,获取所述最新静态化资源包中的启动页并上传至混合app应用程序中的web视图,以启动静态资源界面。s24:启动所述app沙盒中的所述最新静态化资源包中的静态资源界面,并且与服务端进行跨域通讯,根据所述用户标识信息完成用户权限认证,以从服务端获取界面所需的业务数据。步骤s24进一步具体包括:1)通过混合app应用程序中的web视图程序加载所述最新静态化资源包中的启动页,启动静态资源界面;2)所述app沙盒通过所述web视图程序发送一业务数据请求至服务端,所述业务数据请求中携带有用户标识信息;3)所述web视图程序接收服务端返回的界面所需的业务数据,其中服务端接收业务数据请求并进行合法性校验,并根据用户标识信息判定用户合法后,调用与所述业务数据请求相对应的业务数据,并且返回至所述web视图程序。参考图5,跨域请求数据通讯认证流程示意图。其中,权限过滤器以及缓存服务器设置于服务器端中,权限过滤器用于对业务数据请求的合法性进行校验;缓存服务器用于进行服务端请求校验。将静态化资源包部署到app沙盒并启动静态资源界面后,需与服务端通讯。因静态化资源是运行在app沙盒中,其和服务端不是隶属于同一个域,app沙盒中发出的静态页面请求服务端业务数据会存在以下问题:1)服务端因app沙盒中发出的请求与自身不是来自同一域,判定为不合法请求,会拒绝请求响应,导致app沙盒内静态化页面服务端业务数据失败;2)因为不同移动平台的不同操作系统版本对app沙盒存储的cookies信息实现不完全一样,导致服务端认为app沙盒中发出的不同页面的请求不是同一个会话(session),会要求用户重新登录后才能访问服务端业务数据,最终导致用户重复登录。故app沙盒中发出的请求需通过服务端第三方认证模块认证后,才能从服务端获取静态资源界面渲染所需的业务数据,也即需要进行跨域请求数据通讯认证。跨域请求数据通讯认证具体采用以下方式实现:1)服务端对所述app沙盒发出的页面请求设置为授信,所述页面请求包括业务数据请求;即服务端判定app沙盒中发出的页面请求均为合法请求。2)服务端接收到所述app沙盒发出的页面请求时,通过当前请求用户标识信息在缓存服务器中查找该用户是否已经登录,若有登录信息则返回该请求所需的服务端的业务数据,若没有登录信息,则控制移动客户端跳转到登录界面。也即,服务端请求校验从服务端的session校验调整为从缓存服务器中校验;同时,app沙盒中静态页面所有向服务端发起的业务数据请求时,附带当前用户标识信息(例如用户id,用户id可通过h5的sessionstorage中获取,用户登录时将其id存储在sessionstroage中)。混合app常规模式下,请求资源必须通过网关找到对应服务器,服务器再将所有请求资源逐一响应返回。通常情况下,请求的资源都比较多、比较大,如图片、javascript脚本文件,导致网络响应不及时,请求页面空白、卡顿等,用户体验不佳。通过资源静态化,让所有资源文件均储存在混合app的本地沙盒中,请求资源时,无需通过任何网络请求,即使在无网络的环境下亦能及时响应请求的资源。对混合app的使用流畅度、响应速度、运行性能等方面都有很大提升,用户体验也随之得到加大改善。参考图6,本发明所述的混合app应用程序的资源更新系统的架构示意图。所述的混合app应用程序的资源更新系统,适用于移动客户端,包括设置于移动客户端60的app启动模块61、版本检查模块62、资源包下载模块63、app沙盒64、资源包部署模块65以及web视图模块66。所述app启动模块61,用于启动安装于移动客户端中的混合app应用程序,并且获取用户标识信息。页面和页面所关联的图片、样式表、脚本等统称为资源。用户需要进行混合app应用程序的资源更新时,先打开混合app应用程序,混合app应用程序会获取用户标识信息,以用于后续进行用户权限认证。用户标识信息具体是指用户的身份标识,此标识用于用户登录和权限控制,如用户的账号名。所述版本检查模块62,用于检查当前静态化资源包的版本信息与服务端的最新静态化资源包的版本信息是否一致,并在判定版本信息不一致时调用所述资源包下载模块63从服务端获取最新静态化资源包。静态化资源包包含如下内容:图片文件、css样式表文件、javascript脚本文件、html页面文件。app启动模块61打开混合app应用程序后,版本检查模块62会先检查当前静态化资源包是否为最新版。若已是最新版,则继续进行后续流程,若不是最新版本,则需要调用资源包下载模块63获取最新版本。具体的,版本检查模块62将当前静态化资源包的版本信息与服务端的最新静态化资源包的版本信息进行比较,若不一致,则资源包下载模块63通过网关转发一静态化资源包请求指令至服务端,并接收服务端返回的最新静态化资源包;若一致,则当前静态化资源包即为最新静态化资源包。参考图7,本发明所述的混合app应用程序的资源更新系统的最新静态化资源包获取流程示意图。app启动模块61打开混合app应用程序后,版本检查模块62检查到有新版本的静态化资源包,资源包下载模块63通过网关71转发一静态化资源包请求指令至服务端72;服务端72的资源包请求收发模块721根据所述静态化资源包请求指令生成一打包请求;服务端72的资源包静态化处理模块722(即为图3中的资源静态化器)根据所述打包请求从服务端72的资源池723中查找并获取最新资源列表;服务端72的资源包请求收发模块721根据所述最新资源列表,将相应的资源文件进行静态化处理后进行打包压缩形成最新静态化资源包,并更新打包压缩后的最新静态化资源包的版本信息;之后资源包请求收发模块721将最新静态化资源包返回至移动客户端60的资源包下载模块63。最新静态化资源包获取所涉及的模块及说明如表1所示:表1,最新静态化资源包获取所涉及的模块及说明。所述资源包部署模块64,用于部署所述最新静态化资源包至所述app沙盒65中。获取到最新静态化资源包后,混合app应用程序会启动资源包部署模块64将最新静态化资源包部署到app沙盒65中,最终将资源包中启动页返回到web视图。静态资源包部署所涉及的模块及说明如表2所示:表2,静态资源包部署所涉及的模块及说明。所述web视图模块66,用于启动所述app沙盒65中的所述最新静态化资源包中的静态资源界面,并且与服务端进行跨域通讯,根据所述用户标识信息完成用户权限认证,以从服务端获取界面所需的业务数据。具体的,通过web视图模块66加载所述最新静态化资源包中的启动页,启动静态资源界面;app沙盒65通过所述web视图模块66发送一业务数据请求至服务端,所述业务数据请求中携带有用户标识信息;web视图模块66接收服务端返回的界面所需的业务数据;其中服务端接收业务数据请求并进行合法性校验,并根据用户标识信息判定用户合法后,调用与所述业务数据请求相对应的业务数据,并且返回至所述web视图模块66。图8,本发明所述的混合app应用程序的资源更新系统的跨域请求业务数据及通讯认证流程示意图。资源包部署模块64获取部署后的资源启动页,并提交到web视图模块66;通过web视图模块66加载所述最新静态化资源包中的启动页,启动静态资源界面;app沙盒65通过所述web视图模块66发送一业务数据请求至服务端72的请求拦截模块724(即为图5中的权限过滤器),所述业务数据请求中携带有用户标识信息;请求拦截模块724在拦截业务数据请求之后,发送合法性认证请求至服务端72的用户认证模块725,对业务数据请求的合法性进行校验;用户认证模块725在接收到合法性认证请求之后,发送用户标识信息至服务端72的用户认证中心426(即为图5中的缓存服务器),用户认证中心426判断当前发送的业务数据请求中的用户是否合法,并返回认证结果;)所述请求拦截模块724根据返回的认证结果执行相应的操作:当所述认证结果为允许时,所述请求拦截模块724从服务端72的业务数据服务模块727中调用与所述业务数据请求相对应的业务数据,并且返回至所述web视图模块66。跨域请求业务数据及通讯认证所涉及的模块及说明如表3所示:表3,跨域请求业务数据及通讯认证所涉及的模块及说明。跨域请求数据通讯认证具体采用以下方式实现:1)服务端对所述app沙盒发出的页面请求设置为授信,所述页面请求包括业务数据请求;即服务端判定app沙盒中发出的页面请求均为合法请求。2)服务端接收到所述app沙盒发出的页面请求时,通过当前请求用户标识信息在缓存服务器中查找该用户是否已经登录,若有登录信息则返回该请求所需的服务端的业务数据,若没有登录信息,则控制移动客户端跳转到登录界面。以下以找钢网的钢厂助手app为示例,对资源静态化在混合app中的应用做进一步说明。首先,将动态资源静态化。具体为:1)将所有需要静态化页面、图片资源、样式表等规划到mobile主目录中,样式表目录:mobile/css,图片目录:mobile/img,javascript脚本目录:mobile/js,静态页面目录:html,动态页面目录:page;2)配置需静态化的资源清单,如下表4所示;3)最终生成的zip包。资源类型资源名称资源路径静态化资源名称静态化资源路径说明pagelogin.actionm/login.htmlhtml/登录页jscomponent.util.jsjs/component/component.util.jsjs工具脚本表4,需静态化的资源清单配置结果。其次,实现跨域数据访问。具体为:1)服务端对app沙盒发出的页面请求设置为授信:响应头header中添加跨域参数;2)app沙盒中静态页面所有向服务端发起数据请求时,附带当前用户id,便于用户合法性认证。以及,热更新。具体为:在用户通过app沙盒静态页面访问服务端数据时,页面将获取到的最新资源包版本号通过js传递到native中,native将最新版本号与本地app沙盒中版本号对比,若服务端版本号大,则向服务端发起下载资源包请求。native下载后,将最新资源包替换到app沙盒中。为避免系统缓存,native将混合app页面重新跳转到登录页,用户登录后便可查看到最新更新内容。以上所述仅是本发明的优选实施方式,应当指出,对于本
技术领域
的普通技术人员,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1