iOS可配置系统

作者: littleGG 发布时间: 2019-08-08 浏览: 2089 次 编辑

## 介绍


可配置系统是一套动态更新App的系统,允许我们在不发版的情况下,更新App的内容和外观。


为什么会有这样一个系统?2015年初,某产品发现x宝的底部栏时不时的更换皮肤,贴合不同的节日和主题,非常漂亮,遂萌生了我们也要搞一套的想法。只是简单的支持更换UI,一年用个两三次,有我们开发自己来配。于是第一版系统诞生了,没有后台,由我们自己写JSON字符串,仅支持动态更新底部栏的图片。


当然,需求的野心肯定是不会止步的,渐渐的,个人中心要配置,登录注册也要配置,首页、账户管理....一个个的需求接踵而来,形成了我们如今看到的可配置系统。


## 实现


1.  可配置系统在技术上涉及到后台、API、APP


*   后台:管理可配置JSON文件

*   API:根据请求接口的客户端、App版本和站点信息,返回相应的可配置文件Url给App

*   APP:接收可配置文件并缓存,实现相关业务逻辑


1.  在业务逻辑上涉及到客户端、App版本、站点三个维度


*   客户端:iOS、Android、Wap

*   App版本:支持对任意一个或多个版本做配置

*   站点:支持对大站做配置


1.  为了优化流量使用,每个可配置化文件都有一个版本号。在请求最新可配置化文件时,会把这个版本号传给API,API判断如果该版本文件已经为最新,则App端无需重复下载


## 怎样新增一个可配置条目


在iOS端,为了避免写两套代码,所有可配置的业务模块,都会统一读取配置来实现业务逻辑。那么这样就会有个问题,在用户初次使用,并没有联网的情况下,本地没有可配置文件的缓存,也无法从服务器拿到配置文件,这时候如何实现?针对这样的使用场景,iOS端项目内部有一份默认可配置文件,当初次使用没有本地缓存也没有服务器文件时,会读取这份默认文件来实现业务逻辑。所以每次新增/更新一个可配置模块,需要做以下几件事情:


1.  在本地BLDefaultConfigData增加/更新可配置模块

2.  找测试在后台更新相应的可配置文件

3.  开发相应功能并测试


## 未来


*   加强安全性。整个可配置文件会透露App的很多信息,所以在传输和存储过程中要确保安全。在传输时,通过https来加密;在本地存储时,应该加密后再存储,并把现在一些显而易见的文件名和字段替换掉

*   目前配置模块不成体系,往往是加一个功能加一个字段,难以维护和管理。将来需要根据规范来命名,并且制定纵向深度,以此给所有业务模块分区分块

*   目前可配置功能,App内部各个业务单位都各自取用,代码耦合严重,将来考虑将这一部分层级化,把原来混在一个业务逻辑里面的配置A和配置B,拆分成该业务下的子业务A和子业务B

*   目前写配置文件比较痛苦,很难做版本管理,将来要做成一个UI系统,做成类似配广告位的形式,把自动生成App默认可配置文件做成工具