一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于服务端数据跨平台动态渲染APP原生界面的热部署方法与流程

2022-11-09 21:42:22 来源:中国专利 TAG:

基于服务端数据跨平台动态渲染app原生界面的热部署方法
技术领域
1.本发明涉及app热部署,具体涉及基于服务端数据跨平台动态渲染app原生界面的热部署方法。


背景技术:

2.目前,所有的移动应用app都需要用户通过应用市场或者网站下载至手机中使用,而当app内容需要改变,或者几个界面存在变动时,开发商就需要发布新的移动应用版本来进行更替,并且开发商需要根据不同的平台做出不同的调整和修改,用户也需要重新下载app进行更新才能使用新的功能,这样就导致每个移动应用版本的更新和发布都需要相当长的时间跨度才能实现。
3.通常移动应用app的运营会有不断的调整和修改,包括一些静态文字和界面色彩等简单变化。如果开发商仅仅因为一些细小的调整和修改就需要重新发布版本以提供更新的话,不同的平台又会应用不同的标准,势必会造成大量的时间和人力成本的浪费,不利于移动应用app的发展和运营。


技术实现要素:

4.(一)解决的技术问题
5.针对现有技术所存在的上述缺点,本发明提供了基于服务端数据跨平台动态渲染app原生界面的热部署方法,能够有效克服现有技术所存在的因为一些简单的数据和界面变动就需要重新发布版本以提供更新、无法跨平台使用的缺陷。
6.(二)技术方案
7.为实现以上目的,本发明通过以下技术方案予以实现:
8.基于服务端数据跨平台动态渲染app原生界面的热部署方法,包括以下步骤:
9.s1、定义服务端的数据与展现接口标准,定义app原生界面的数据与组件库标准;
10.s2、定义app原生界面中每个界面与服务端交互的数据接口,确定每个界面需要使用的界面组件和展现数据;
11.s3、打开app时向服务端发出请求,app获得服务端返回的语言包数据集合,并在语言包数据存在变化时立即更新本地缓存;
12.s4、app根据界面组件产生的用户交互动作跳入具体展现界面,通过具体展现界面的数据接口向服务端发出请求,获得具体展现数据;
13.s5、app根据返回的界面布局键值数据对集合调用相应的具体界面组件并进行渲染,根据具体界面组件的位置结合具体展现数据填充具体展现界面内容;
14.s6、app根据界面组件产生的用户交互动作进行新的具体展现界面流转和具体展现数据调用,即返回s4。
15.优选地,s3中打开app时向服务端发出请求,app获得服务端返回的语言包数据集合,包括:
16.服务端根据app的语言类型调用相应的全局静态语言包,将以高速静态缓存文件存储的全局静态语言包转换为数组,并生成相应的md5值,将md5值放入app请求返回的data数据集中发送给app。
17.优选地,s3中在语言包数据存在变化时立即更新本地缓存,包括:
18.app每次被打开时进行异步调用,通过判断md5值的变化情况来判断全局静态语言包是否存在变化,并在全局静态语言包存在变化时立即更新本地缓存。
19.优选地,s4中通过具体展现界面的数据接口向服务端发出请求,获得具体展现数据,包括:
20.服务端根据数据接口发送的请求,根据服务端的数据与展现接口标准、app原生界面的数据与组件库标准准备具体展现数据,并根据app的语言类型、app原生界面中每个界面与服务端交互的数据接口向app返回具体展现数据。
21.优选地,s5中app根据返回的界面布局键值数据对集合调用相应的具体界面组件并进行渲染,包括:
22.app根据app原生界面中每个界面与服务端交互的数据接口中的dto数据接口定义创建本组件的dto数据对象,并根据app原生界面的数据与组件库标准来填充界面组件的展现属性;
23.其中,界面组件的展现属性包括界面组件背景颜色和界面组件字体大小。
24.优选地,所述app通过dto数据对象中的pz_classtype来创建相对应的组件对象,如果运行时内存中存在未被渲染的组件对象,则直接从内存中读取进行渲染,否则进行新的组件对象创建并进行渲染;
25.当组件对象不在界面中展现时,回收这些不进行展现的组件对象,重置其中的数据,放入内存中等待下次调用渲染。
26.优选地,所述app通过二级缓存实现对界面组件的调用和渲染,界面组件的调用和渲染先从第二级缓存开始,即先查找内存中是否存在已渲染的组件对象;
27.如果第二级缓存中存在已渲染的组件对象,则直接拿出并填充显示具体展现数据,否则通过第一级缓存创建组件对象进行渲染后加入第二级缓存,然后在组件对象中填充显示具体展现数据;
28.其中,第一级缓存为本地存储,以文件形式存在;第二级缓存为内存存储,存储在运行时缓存。
29.优选地,s5中根据具体界面组件的位置结合具体展现数据填充具体展现界面内容,包括:
30.app获得需要展现的具体界面组件后,调用app原生界面的数据与组件库标准中统一组件接口的calculatewidth、calculateheight两个参数来动态计算具体界面组件的宽度、高度;
31.根据heightoffset、xoffset两个参数对具体界面组件进行布局和定位,完成具体界面组件的界面展现。
32.优选地,s5中app根据返回的界面布局键值数据对集合调用相应的具体界面组件并进行渲染之前,包括:
33.app跳入具体展现界面后,检查本地存储的界面md5值、数据md5值是否与服务端数
据一致;
34.如果界面md5值发生变化,则需要重新渲染界面组件,否则无需重新渲染界面组件,直接在界面组件中填充显示具体展现数据。
35.(三)有益效果
36.与现有技术相比,本发明所提供的基于服务端数据跨平台动态渲染app原生界面的热部署方法,具有以下有益效果:
37.1)帮助开发者建立统一的跨平台开发标准和热部署标准,可以在移动应用app已经发布的情况下,无需更新版本或者重新发布,即可进行对界面进行修改和升级,对界面数据调用逻辑进行变更,实现对交互界面的优化,从而避免开发者因为一些简单的数据和界面变动就陷入需要重新发布版本以提供更新的窘境;
38.2)通过此方法能够进一步规范移动应用app的开发和维护,从而保证对用户需求和发展变化进行快速地实践和部署,提高移动应用app的快速适应能力;
39.3)通过二级缓存机制,提升了界面渲染效率和数据展现速度,从而显著提升了用户体验感;
40.4)本方法能够跨平台使用,可以同时在android平台和ios平台中部署使用。
附图说明
41.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
42.图1为本发明的流程示意图;
43.图2为本发明中打开移动应用app后进行热部署的具体流程示意图。
具体实施方式
44.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
45.基于服务端数据跨平台动态渲染app原生界面的热部署方法,如图1和图2所示,

定义服务端的数据与展现接口标准,定义app原生界面的数据与组件库标准。
46.a、定义服务端数据与展现的接口标准:
47.服务端的数据类型标准:静态全局变量数据,动态内容展现数据,动态布局展现数据;
48.服务端的数据存储标准:数据库动态存储,高速静态缓存文件存储;
49.服务端与app的数据交互标准:数据交互格式的规定,敏感数据的加密标准。
50.1)服务端以及app的数据定义,必须通过键值对的形式进行定义,即key=》value的形式。key值的定义规范:
51.a、不超过15个的英文或英文与数字组合的字符串;
52.b、字符串必须唯一,不可重复;
53.c、常量数据的key使用大写字符;
54.d、app数据的key值需要和服务端数据保持一致,一一对应;
55.e、色彩数据统一使用16进制形式展现,如白色#ffffff;
56.f、用户敏感数据必须加密处理,如用户密码、昵称等;
57.g、所有数据均可以通过服务端进行修改调整。
58.2)服务端的数据类型标准
59.a、各国的静态语言包数据,如中文语言包,英文语言包等;
60.b、界面静态数据,如组件之间的间隔、组件全局色彩等;
61.c、内容展现静态数据,如每次滚动数据加载数量,图片地址前缀,运行时缓存区空间大小,数据版本号,全局通知提醒,服务端交互的接口地址,新版本的更新提示以及自动更新地址;
62.d、动态内容展现数据包含:用户提交的图片、文字、语音、视频等数据,以及管理者提交的图片、文字、视频等数据;
63.e、动态布局展现数据包含:根据设备类型以及展现的内容计算的组件宽度、高度,以及x、y轴位置数据。
64.3)服务端的数据存储标准
65.a、数据库动态存储,可通过系统后台进行数据库数据的新增、修改和删除;
66.b、高速静态缓存文件存储,对于高频抽取,并且不需要频繁修改的数据进行二级高速缓存处理,如使用单一数组集合,并对这组数据进行序列化存储在单一文件中,可在其他执行文件中直接调用,并对数据的更新时间设定阈值,超过此阈值则自动拉取数据库最新数据以更新此文件。
67.4)服务端与app的数据交互标准
68.a、数据交互格式的规定:统一使用json格式进行交互。json数据集中必须包含以下参数:
[0069][0070][0071]
data数据集中必须包含以下参数:
[0072]
参数类型是否必须描述pz_classtypestring是对应的组件库名,需要和调用的组件库对应pz_messagestring是默认展现的文字pz_message_urlstring是组件展现后需要调用的服务地址
…………
否其他需要传递的数据参数
[0073]
b、敏感数据的加密标准,加密类型包含简单base64加密和秘钥加密。对语言包、链
接地址等非敏感数据进行简单base64加密;秘钥加密通过服务端设定的动态秘钥进行加解密用户数据,例如用户名、用户密码等敏感数据。
[0074]
b、app原生界面的数据与组件库标准:
[0075]
app的数据存储标准:高速运行时缓存数据存储,运行时缓存数据空间占用标准,本地持久化数据存储标准;
[0076]
app的数据展现标准:组件库的定义规范,组件的展现规则,组件的内存管理。
[0077]
1)app的数据存储标准
[0078]
a、高速运行时缓存数据存储,通过定义app客户端全局静态数组来实现,运行时内存设定值依据全局变量定义,一般设置为128k字节,遵循“先入先出”的原则来插入和销毁数据;
[0079]
b、本地持久化数据存储标准,通过app客户端本地文件化存储数据,相当于临时缓存文件,通过md5标识本地数据是否发生变化,如果服务端有更新,md5标志位会有变化,则需要销毁本地数据重新生成缓存。
[0080]
2)app的数据展现标准
[0081]
a、组件库的定义规范,命名规范,所有组件必须以项目前缀命名,例如:pzbutton、pzimage;
[0082]
b、所有的组件库必须继承统一组件接口,组件接口包含以下参数:
[0083][0084]
c、组件的展现规则以及内存管理
[0085]
服务端返回数据集中的pz_classtype需要和组件库中的组件名一一对应,通过
pz_classtype来对界面中需要展现的组件进行渲染。获取界面中需要展现的组件遵循“先找内存,再行创建”的规则,根据全局变量定义相同组件可以在运行时内存中存储的数量来设定阈值。
[0086]
如果运行时内存中存在未被渲染的组件对象,则直接从内存中读取进行渲染,否则进行新的组件对象创建并进行渲染。当组件对象不在界面中展现(例如用户翻页、滚屏等操作)时,回收这些不进行展现的组件对象,重置其中的数据,放入内存中等待下次调用渲染。
[0087]

定义app原生界面中每个界面与服务端交互的数据接口,确定每个界面需要使用的界面组件和展现数据。
[0088]
c、app原生界面中每个界面与服务端交互的数据接口
[0089]
所有的界面组件必须继承统一组件接口,组件接口中包含一个数据展现的对象数组dto,界面的数据展现内容由dto数据对象进行渲染。
[0090]
每个界面展现的组件都需要定义dto数据接口,dto数据接口定义规范(包含参数)如下:
[0091][0092]

打开app时向服务端发出请求,app获得服务端返回的语言包数据集合,并在语言包数据存在变化时立即更新本地缓存。
[0093]
a、打开app时向服务端发出请求,app获得服务端返回的语言包数据集合,包括:
[0094]
服务端根据app的语言类型调用相应的全局静态语言包(例如用户手机的默认语言为中文,则服务端调用zh-cn的语言包),将以高速静态缓存文件存储的全局静态语言包转换为数组,并生成相应的md5值,将md5值放入app请求返回的data数据集中发送给app。
[0095]
b、在语言包数据存在变化时立即更新本地缓存,包括:
[0096]
app每次被打开时进行异步调用,通过判断md5值的变化情况来判断全局静态语言包是否存在变化,并在全局静态语言包存在变化时立即更新本地缓存。
[0097]
本技术技术方案中,全局静态语言包具有以下特征:
[0098]
a、此语言包仅在打开移动应用app时调用,语言包数据中包含md5标识,并符合语言包数据规范;
[0099]
b、每次调用会对比服务端数据反馈的md5标识,此标识标致着返回数据较上次调用是否发生改变,如果有改变就需要更新移动应用app的本地缓存和运行时缓存,并通知界面进行重新渲染展现,如果没有改变就无需重新渲染。
[0100]

app根据界面组件产生的用户交互动作跳入具体展现界面,通过具体展现界面的数据接口向服务端发出请求,获得具体展现数据。
[0101]
其中,通过具体展现界面的数据接口向服务端发出请求,获得具体展现数据,包括:
[0102]
服务端根据数据接口发送的请求,根据服务端的数据与展现接口标准、app原生界面的数据与组件库标准准备具体展现数据,并根据app的语言类型、app原生界面中每个界面与服务端交互的数据接口向app返回具体展现数据。
[0103]

app根据返回的界面布局键值数据对集合调用相应的具体界面组件并进行渲染,根据具体界面组件的位置结合具体展现数据填充具体展现界面内容。
[0104]
a、app根据返回的界面布局键值数据对集合调用相应的具体界面组件并进行渲染之前,包括:
[0105]
app跳入具体展现界面后,检查本地存储的界面md5值、数据md5值是否与服务端数据一致;
[0106]
如果界面md5值发生变化(例如修改了色彩、字体大小、界面间距等),则需要重新渲染界面组件,否则无需重新渲染界面组件,直接在界面组件中填充显示具体展现数据。
[0107]
本技术技术方案中,界面的动态渲染及数据展现具有以下特征:
[0108]
a、服务端数据接口返回两部分数据,一部分是界面布局数据,另一部分是内容展现数据,这两部分数据都包含md5标志位,如果此标志位有变化则进行重新渲染和展现,如果无变换则不需要重新渲染和展现;
[0109]
b、界面渲染中存在的通用组件,在第一次使用后会以数据集的形式驻留在app内存中,方便下次界面渲染时快速调用;
[0110]
c、界面渲染和数据展现分开执行,界面的标志位无变化仅数据的标志位有变化时,只进行数据替换无需进行界面渲染,数据替换会通知组件库调用组件接口中的observedto参数,来更新组件上的文字展现以及其他内容的展现。
[0111]
b、app根据返回的界面布局键值数据对集合调用相应的具体界面组件并进行渲染,包括:
[0112]
app根据app原生界面中每个界面与服务端交互的数据接口中的dto数据接口定义创建本组件的dto数据对象,并根据app原生界面的数据与组件库标准来填充界面组件的展现属性;
[0113]
其中,界面组件的展现属性包括界面组件背景颜色和界面组件字体大小等。
[0114]
1)app通过dto数据对象中的pz_classtype来创建相对应的组件对象,如果运行时内存中存在未被渲染的组件对象,则直接从内存中读取进行渲染,否则进行新的组件对象创建并进行渲染;
[0115]
当组件对象不在界面中展现时,回收这些不进行展现的组件对象,重置其中的数据,放入内存中等待下次调用渲染。
[0116]
2)app通过二级缓存实现对界面组件的调用和渲染,界面组件的调用和渲染先从
第二级缓存开始,即先查找内存中是否存在已渲染的组件对象;
[0117]
如果第二级缓存中存在已渲染的组件对象,则直接拿出并填充显示具体展现数据,否则通过第一级缓存创建组件对象进行渲染后加入第二级缓存,然后在组件对象中填充显示具体展现数据;
[0118]
其中,第一级缓存为本地存储,以文件形式存在;第二级缓存为内存存储,存储在运行时缓存。
[0119]
需定义运行时缓存(即第二级缓存)大小,通过调用频率和创建时间来决定内存销毁顺序,调用频率优先于创建时间。如a组件的调用频率为5,创建时间为3小时前;b组件的调用频率为2,创建时间为1小时前,则先销毁b组件内容驻留。
[0120]
c、根据具体界面组件的位置结合具体展现数据填充具体展现界面内容,包括:
[0121]
app获得需要展现的具体界面组件后,调用app原生界面的数据与组件库标准中统一组件接口的calculatewidth、calculateheight两个参数来动态计算具体界面组件的宽度、高度;
[0122]
根据heightoffset、xoffset两个参数对具体界面组件进行布局和定位,完成具体界面组件的界面展现。
[0123]

app根据界面组件产生的用户交互动作进行新的具体展现界面流转和具体展现数据调用,即返回


[0124]
移动应用app根据界面组件产生的用户交互动作(如用户的点击事件),进行新的具体展现界面流转和具体展现数据调用。例如key为pzbutton,则通过本地渲染自定义的pzbutton组件,并根据服务端设定的x、y值确定此button的位置、button上显示的文字,以及此button的交互事件,点击此button会根据接口定义的事件而调用新的数据接口,并根据反馈结果进行界面流转。
[0125]
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不会使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献