一个关于推送消息平台APP的项目总结

前言

该总结更多的是自己在参与项目开发时候的一些感想与经验教训。这次的项目是一个基于iOS Native的用于接收企业内部消息推送的APP的二期开发,相对应的还有一个Server端用于发出推送。项目的出现是为了作为一个中间件形式的插件整合到其它企业内部APP中。(不得不吐槽一下,为什么不直接整合到每一个APP里面。)

关于技术

  • 主要占大头的是关于消息推送的技术,使用的是Apple原生的APNS来做notification。项目里面遇到的坑包括项目从API兼容(iOS7,iOS8+不同的API),推送消息长度的问题,badge的问题,以及项目Server从http转换到https后无法接受推送的问题。
  • iOS9的分屏功能,遇到的坑包括如何支持分屏,如何判断项目正在分屏,分屏的时候旋转的处理,分屏时候弹窗的处理。>>>(update:导致这种情况的原因是因为在旧代码上进行的修修补补,其实根本的原因是因为扫描库的Object在使用的时候用到了CALayer的一些参数,而CALayer是不支持autolayout的,所以在旋转的时候视图并不会改变,所以在不影响旧代码的前提下,每一次旋转都会直接把视图reload,所以这样就会导致很多弹窗同时被reload,出现视图的错误,然而最后的解决方案还是把这一块重写了,,在每次设备旋转或者background-》active的时候都把layer的位置重新更新一遍。)
  • 用户注册使用的是二维码扫描的形式来进行注册,用的是MTBarCodeScanner,轻量级的扫描库,也是项目里面遇到坑最多的地方,扫描库加上旋转分屏以及错误的弹窗把我坑的体无完肤。最后这一块只能修修补补,等下一个release再修复,毕竟时间不够了,还是太年轻。以后遇到这种问题要及时跟SA提出更好的解决方案。可惜这个项目的SA也是个坑。(希望他不会看我的blog)
  • 自定义的UIPageControl,主要是算法及弹性效果的处理。
  • 项目打包。第一次接触,了解到了开发版及企业版打包的流程。

关于架构

  • 整个项目基本是传统的MVC架构,我也是比较推崇的,因为比较安全。项目里面有前人留下来的用来练手的用ReactiveCocoa的MVVM架构,(前人把这个写完就跑了 (╯‵□′)╯︵┴─┴),也是因为这个问题导致项目临上线发现项目升级会出问题。

关于版本升级

  • 具体原因是前人在VM里面发送请求获取数据后用UserDefault存起来了,然后在View层取值显示,因为上一个版本的model跟这个版本的model不一致,导致User在从上一个版本直接升级到新版本的时候Mantle进行Model匹配错误导致APP crash。解决办法也很牛B(老大教的),直接把新版本的UserDefault的key换个名字,紧急修复。下一个Release要改。
  • 版本升级的逻辑,call Server检测版本的API,得到Server的版本,是否强制更新,提示更新的时间间隔,如果Server版本比local版本大,检测是否强制更新,是则每次进入都弹窗,不是则规定时间内对User进行弹窗。

关于优先级

  • 这里的优先级指的是功能的优先级,在开发周期短的情况下,只要主要功能没问题,一些次要的小问题可以先放下来留到后面解决。所以作为项目维护的要体谅上一个版本开发的人,想改,但是没时间,一个专业的程序员写完出了问题其实也是不开心的,只是旧的还没来得及下一个release,新的又来了。提高自己的开发技能,不要坑下一个接手的人才是最好的。

关于维护

  • 当然是要吐槽一下前人的代码的,这个版本出现了很多问题其实都上一个版本遗留下来但是又没有人发现的问题。这一次的版本更新加了新模块,从只支持iPhone到支持iPad和iPhone,还有分屏,以前的布局基本全不能用,所以整个项目除了一些call Server的API其它都重写了。下一个接我的代码的估计也要骂人的,所以还是自己有时间偷偷的改一下。

总结

  • 完成一个项目学到的东西确实是很多。接触的东西多了,承受的东西也多了。接手下一个项目的时候更加成熟了,这才是最重要的。工作了差不多一年,其实iOS的技术提升得并不多,但是对项目的架构有了更高层次的认识,觉得自己有点向全端工程师的方向发展了哈哈。期待下一个Release做的更好。最后说一句自己的感想,把身边所有的坑都踩下去了,你就站在最高处了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值