基础组件
就是一些基本的宏定义,全局字段,全局方法等,比如设备(宽高、机型、IDFA…)、颜色宏、appKit(id、名称、UA…)、单例宏等等
UI组件
日常开发来说,UI组件显得非常重要了,UI是一个非常庞大且重要的话题,并不是说iOS按照自己的部门做个组件库就可以了,为了保证各端的统一,你的UI组件库需要跟其他部门同步才行,这里就列一下简单的功能,具体等我后面会写一篇《UI统一解决方案》文章详细介绍,那么UI组件我们需要封装哪些内容呢?请看图
根据上图我们了解UI可以分解为 动画、字体、图标、控件(基本控件、业务控件),色板等等,而不单单只是UI控件,这里也简单介绍下基本控件和业务控件的区别,它们往往跟是否跟业务强关联,改动是否频繁、是否可以拿去到其他app使用有很大的不同,我们可以从这几个维度思考
网络组件
一般基于公司自己的网络请求、业务需求做二次封装,达到统一处理,快捷调用等效果,如缓存策略、错误码处理、域名解析、网络问题处理等等,当然,仅限于网络组件是不满足的,我们项目内的接口格式都统一化,所以还研发了一个网络代码自动生成工具,自动根据接口生成网络请求代码和模型,提高开发效率与质量
分类组件
开发是自由的,你会发现项目里分类文件分散各处,而且方法功能可能还重复编码,所以不法,有一点需要说明下,针对数组越界崩溃这些分类的方法,已经没必要写了,因为下面有闪退组件做了预防,你再写相当于多调用了判断代码
闪退组件
为了稳定线上崩溃率,闪退组件是必不可少的,它的内容就是针对一些常用的闪退,这里列了一些常见的闪退场景,如图
hook了这些问题后,自定义上报到平台作为警告处理,让app还可以继续运行使用,可以说一个完善的闪退组件,它的功劳非常巨大
热修复组件
热修复组件同闪退组件的目标一致,都是为了解决bug,由于JSPatch已经被禁用,所以本人自己研发了一套可以下发原生代码修复的热修复组件,达到线上出问题时可以及时发布热修复的效果,这个修复的原理有机会后续再写文章介绍
上报组件
一般中大型的项目,都会有自己一套数据上报系统,那这时就需要封装一套通用的上报组件,所有开发人员使用这套组件可以有效减少上报的问题的发生
调试组件
先来说个场景,测试反馈说收不到push,那么如何定位问题,她可能会直接来找你,但结果往往不是客户端的问题,这样就导致浪费了很多时间,那么假设我有个push的调试工具可以知道是哪里的问题,那不就可以解决了吗,所以调试组件就诞生了,调试是一个非常庞大的话题,很多东西都可以弄成调试组件,后面我会专门写篇文章来详细介绍有哪些好用的调试组件
地理组件
跟地理相关的,比如获取城市列表,经纬度,地图等等,都封装为地理组件,方便快捷使用
视频、音频播放器组件
app内多业务用到视频播放功能,可以统一使用播放器组件
分享组件
基本每个app都会有第三方登录、分享功能吧,如果你要接入的时候,只需要按照readme的操作设置并调用,那么可以减少你非常大的时间量
web组件
web也是非常复杂的,这里只做一些简单介绍,比如js与原生交互方案、cookie获取设置方案(我们都知道WKWebView的cookie有多蛋疼)、静态资源加载等等功能,后续有机会再写文章做详细介绍
多媒体
图片/视频读取库、图片/视频的裁剪、压缩、上传等等操作,都可以列入到多媒体组件里面
统一打开页面组件
如果你公司项目比较大或者比较多app,那么这个是非常有必要的,举几个场景:web跳转到原生某个页面,通过url跳转;push点击跳转、通用链接打开跳转、长链接mqtt打开跳转等等,所以统一非常有必要,具体后面有机会会详细介绍如果做统一打开页面的方案
其他组件
还有一些其他的组件,可能每个公司不太一样,比如空白页组件,针对app每个页面空白时的处理;预加载组件,针对数据统一进行预加载的方式;蓝牙组件,封装了对蓝牙协议的统一处理等等;缓存组件,对所有的数据缓存进行统一化管理
这篇文章讲的功能组件大概就这些,这下领导问你,你也不用怕没技术优化可以做了吧️🤣,感谢观看^_^