一种基于移动App的界面动态化方法与流程

文档序号:13164117阅读:728来源:国知局
一种基于移动App的界面动态化方法与流程

本发明涉及到移动app界面动态化领域,特别是涉及到一种基于移动app的界面动态化方法,通过界面描述数据动态生成界面,通过用户的标签改变而动态改变其移动app界面。



背景技术:

现如今智能手机、平板电脑等移动设备早已十分普及,大大小小的内容提供商、服务供应商等基本都有自己的移动app。

移动app作为一种富客户端软件,更新升级较为困难。因为app通常是在应用市场进行发布。更新app除了需要通过应用市场审核,时效性较差之外,用户也未必愿意在他们已安装的app有新版发布时立刻进行更新。想要在特殊节假日、时事热点发生等特殊的时间点同步改变app的界面是比较困难的事情。

每一类人甚至每一个人的兴趣爱好和关注点都不尽相同,因此不可能为了迎合所有用户的喜好去发布数十个app,同一个app如何为不同的用户展现不同的内容,是app运营方的难题。针对这个场景,传统信息系统的实现方式是将用户的标签作为查询条件,逐条比对找到所有匹配的内容。这样的方式效率低下,不适应互联网海量查询的应用场景。

鉴于此,需要一种可以动态生成界面并可根据用户的不同标签动态改变界面的更为科学的方法。



技术实现要素:

针对上述现有技术中的缺陷,本发明要解决的技术问题体现在以下几点:1)通过特定的界面描述信息生成界面,当需要变更的时候只要服务端对描述信息进行调整,即可更换界面指定位置的图片、布局、链接地址等;2)不同用户,只要具备不同的属性标签,如“男性”、“中年”、“已婚”等,即可看到app服务商提供的与之匹配的内容。同时,本发明具备优异的性能,在互联网海量查询的应用场景下有很快的响应速度。

针对上述技术问题,本发明的目的在于提供一种基于移动app的界面动态化方法。

为实现上述目的,本发明是根据以下技术方案实现的:

一种基于移动app的界面动态化方法,包括如下步骤:

步骤s1:抽象并定义app界面的描述方式;

步骤s2:将结构化的界面描述信息全集缓存,在定义出界面的描述方式后,界面元素转换为结构化的数据进行存储;

步骤s3:实现从描述信息到app界面的转换,针对ios和android两种操作系统的app进行实现;

步骤s4:服务端读取请求参数进行唯一性处理,作为响应内容在缓存库中的唯一标识;

步骤5:使用唯一性参数值作为键,从缓存库中查找对应界面描述信息缓存;

步骤s6:生成界面描述信息,存入缓存库同时返回生成的界面描述信息;

步骤s7:按照界面转换方法,在app端构建出目标界面。

上述技术方案中,所述步骤s2包括:

步骤s201:将导航对象和拓展信息按一对多的关系建立表存储;

步骤s202:载入所有的导航对象的数据和拓展属性,将拓展属性的信息挂载到所属导航对象上;

步骤s203:将所有的界面元素按键值对的方式进行缓存,只要通过导航对象编号获取某一个信息完整的导航对象;

步骤s204:维护树结构,按照导航对象编号找到其父节点对象,赋值给自身,并把自身插入父节点对象的子对象列表当中;

步骤s205:构造排序,按照双向链表的配置,给导航对象赋值序号,便于客户端程序直接使用。

上述技术方案中,所述步骤s3包括:

步骤s301:解析界面描述信息,将内容转化为客户端可识别的数据模型,并将格式化数据传递给展现容器;

步骤s302:展现容器遍历界面描述信息数据并解析其中的界面元素内容,并把包含界面元素内容的数据传递到界面构建分发器中;

步骤s303:界面分发器根据数据,生成对应的视图,把图片地址、文字、文字颜色、背景颜色的具体界面数据传递给视图;

步骤s304:视图根据界面描述信息对自身进行绘制以及进行图片的下载、缓存,并加快下一次访问相同的图片的展现速度;

步骤s305:界面构建分发器将绘制完成的视图返回给展现容器;

步骤s306:展现容器把所有返回的视图进行拼接,并对点击事件交互逻辑进行关联,完成视图对屏幕的适配,最终展现效果。

上述技术方案中,所述步骤s4包括:

步骤s401:从app发送的http请求参数中读取查询参数,所需的查询参数有:页码、页号、页大小、用作root的导航对象的编号、用户标签列表,并封装成为一个可序列化的请求参数对象;

步骤s402:对封装好的请求参数对象进行预处理,把请求对象中的标签列表按字符进行排序,目的是使同样的标签列表排序一致,最终经过唯一性处理后的结果也相同;

步骤s403:用唯一性算法对预处理过后的请求参数对象进行计算,得到可以唯一标识该请求对象的字符串。具体地,本发明采用的是哈希算法。

上述技术方案中,所述步骤s6包括:

步骤s601:读取完整树结构的导航对象字典;

步骤s602:迭代导航对象字典,按照查询参数中的标签列表对导航对象字典进行筛选,摘除与查询参数中的标签不匹配的所有导航对象,若导航对象本身并没有标签,则认为该对象是通用对象,也将其纳入筛选结果中;

步骤s603:若数据量较大需要进行分页展示,只针对第一级导航对象进行分页操作,其中第一级导航对象都是容器类的导航对象。

步骤s7:按照界面转换方法,在app端构建出目标界面。

上述技术方案中,所述步骤s7包括:

步骤s701:根据初始化数据,构造出标签页区和顶部导航栏区的主要可视导航对象;

步骤s702:根据标签页中导航对象“首页”传递的请求参数,从缓存库中查找对应的页面描述信息字典,对信息进行完整性校验;

步骤s703:循环读取字典中的一级子视图数据,根据一级子视图标识,对多个一级子视图数据生成对应其标识的多个视图,并将数据传递给子视图;

步骤s704:控制器的一级子视图获得数据后,迭代s703步骤,生成子视图的二级子视图。

步骤s705:最底层子视图根据数据对自己进行绘制;

步骤s706:所有子视图迭代结束,返回绘制完成的视图数组。界面根据视图的数据顺序对视图进行排列并展现在主显示区中。

本发明与现有技术相比,具有如下有益效果:

本发明创造了一种通用的app界面描述方式,统一了ios和android两种操作系统对app主界面的认知形式,只需在各自系统中有针对性地进行实现,就能达到在服务端一处进行数据调整,两个平台的客户端界面同时发生改变的效果,界面的变更不需要通过应用市场,也不需要重新安装,大大提升了灵活性。

此外,通过本发明对于用户的个性化内容展现支持能力得到了很大的提升,服务端只要维护好特定内容的所属标签,客户端通过改变用户的标签就能动态地加载不同的内容,让app变得更加个性化。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。

图1为本发明的app界面的描述方式示意图;

图2是使用本发明制作的app的界面示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。

本发明的一种基于移动app的界面动态化方法,包括如下步骤:

步骤s1:抽象并定义app界面的描述方式。

以图2所示的app界面为例,本发明将该app的界面定义为json格式的多层嵌套树形结构,主界面为root,标签页区是第一级导航对象容器,类型为“t000”,“首页”、“聊聊”、“我的”是标签页中的导航对象,类型有“t001”、“t002”等等。其中,首页的导航栏区有一个城市选择控件,在json格式的多层嵌套树形结构中,他是作为标签页导航对象“首页”的子导航对象存在;三个标签页导航对象都有一个属性叫做“url”,用于表示该标签页的主显示区的内容地址。例如,“首页”的url属性为app://navibox?naviroot=1623627742480225284。这代表着“首页”的主显示区域是另一个树形结构,其root是编号为1623627742480225284的导航对象。编号为1623627742480225284的导航对象类型为“i000”,在这个导航对象之下有多种用于展示信息的导航对象容器“i400”、“i100”、“i200”等,每一个导航对象容器之内还有各自的子导航对象。

步骤s2:将结构化的界面描述信息全集缓存,在定义出界面的描述方式后,界面元素转换为结构化的数据进行存储。

步骤s2具体包括:

步骤s201:将导航对象和拓展信息按一对多的关系建立数据表存储,例如导航对象表t_navi表和拓展信息表t_navi_prop表;

步骤s202:载入所有的导航对象的数据和拓展属性,将拓展属性的信息挂载到所属导航对象上;

步骤s203:将所有的界面元素按键值对的方式进行缓存,只要通过导航对象编号获取某一个信息完整的导航对象,以java编程语言为例,表现形式为map<string,navi>;

步骤s204:维护树结构,按照导航对象编号找到其父节点对象,赋值给自身,并把自身插入父节点对象的子对象列表当中;

步骤s205:构造排序,按照双向链表的配置,给导航对象赋值序号,便于客户端程序直接使用。

至此,一个完整的,包含树结构和排序信息的导航对象字典已经创建完成。

步骤s3:实现从描述信息到app界面的转换,针对ios和android两种操作系统的app进行实现;

步骤s3具体包括:

步骤s301:解析界面描述信息,将内容转化为客户端可识别的数据模型,并将格式化数据传递给展现容器;

步骤s302:展现容器遍历界面描述信息数据并解析其中的界面元素内容,并把包含界面元素内容的数据传递到界面构建分发器中;

步骤s303:界面分发器根据数据,生成对应的视图,把图片地址、文字、文字颜色、背景颜色的具体界面数据传递给视图;

步骤s304:视图根据界面描述信息对自身进行绘制以及进行图片的下载、缓存,并加快下一次访问相同的图片的展现速度;

步骤s305:界面构建分发器将绘制完成的视图返回给展现容器;

步骤s306:展现容器把所有返回的视图进行拼接,并对点击事件交互逻辑进行关联,完成视图对屏幕的适配,最终展现效果。

步骤s4:服务端读取请求参数进行唯一性处理,作为响应内容在缓存库中的唯一标识;

步骤s4具体包括:

步骤s401:从app发送的http请求参数中读取查询参数,所需的查询参数有:页码、页号、页大小、用作root的导航对象的编号、用户标签列表,并封装成为一个可序列化的请求参数对象,如requestparam;

步骤s402:对封装好的请求参数对象进行预处理,把请求对象中的标签列表按字符进行排序,目的是使同样的标签列表排序一致,最终经过唯一性处理后的结果也相同。例如:某个请求中包含“male”、“mid_age”、“married”、“owns_car”等多个标签列表,通过排序算法将这四个标签按“male”、“married”、“mid_age”、“owns_car”的顺序排列;

步骤s403:用唯一性算法对预处理过后的请求参数对象进行计算,得到可以唯一标识该请求对象的字符串。

步骤5:使用唯一性参数值作为键,从缓存库中查找对应界面描述信息缓存;

步骤s6:生成界面描述信息,存入缓存库同时返回生成的界面描述信息;

步骤s6具体包括:

步骤s601:读取完整树结构的导航对象字典;

步骤s602:迭代导航对象字典,按照查询参数中的标签列表对导航对象字典进行筛选,摘除与查询参数中的标签不匹配的所有导航对象,若导航对象本身并没有标签,则认为该对象是通用对象,也将其纳入筛选结果中;

步骤s603:若数据量较大需要进行分页展示,只针对第一级导航对象进行分页操作,其中第一级导航对象都是容器类的导航对象,例如步骤s1中提及的“i400”、“i100”、“i200”等。

步骤s7:按照界面转换方法,在app端构建出目标界面,如图2所示,附图2为本发明的界面示意图,步骤s7具体包括:

步骤s701:根据初始化数据,构造出标签页区和顶部导航栏区的主要可视导航对象;

步骤s702:根据标签页中导航对象“首页”传递的请求参数,从缓存库中查找对应的页面描述信息字典,对信息进行完整性校验;

步骤s703:循环读取字典中的一级子视图数据,根据一级子视图标识,对多个一级子视图数据生成对应其标识的多个视图,并将数据传递给子视图。一级子视图如图2的‘选项一’到‘选项四’组成的整体视图。

步骤s704:控制器的一级子视图获得数据后,迭代s703步骤,生成子视图的二级子视图。二级子视图如图2的‘选项一’视图。

步骤s705:最底层子视图根据数据对自己进行绘制;

步骤s706:所有子视图迭代结束,返回绘制完成的视图数组。界面根据视图的数据顺序对视图进行排列并展现在主显示区中。

通过本发明提供的技术方案,统一了ios和android两种操作系统对app主界面的认知形式,只需在各自系统中有针对性地进行实现,就能达到在服务端一处进行数据调整,两个平台的客户端界面同时发生改变的效果,界面的变更不需要通过应用市场,也不需要重新安装,大大提升了灵活性。

此外,通过本发明对于用户的个性化内容展现支持能力得到了很大的提升,服务端只要维护好特定内容的所属标签,客户端通过改变用户的标签就能动态地加载不同的内容,让app变得更加个性化。

虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。

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