转眼2018了!早上看到有关于2017年Q3季度关于互联网行业的数据(我只截了一张图)。说实话,作为一个iOS开发者看到这样的一个数据,沮丧,有一些,但更多的是想要做好自己吧。2018把眼界放宽,在iOS领域突破的同时,也在其它专业领域突破自己。从事互联网行业,我们要做的不是一成不变,而是以最快的速度跟上这个行业的进步。
手头上做的一个项目,由于公司项目调整,时间不那么赶了,就打算整理一下2017年的工作收获和不足。
2017年,是收获的一年。一直从事纯软件开发的我,进军到物联网行业,和前辈们学习到了很多。技术领域的专注切换到了更多层面。处理问题的方式也变得多样性。比如,会更多的思考。以前,看到不合理的需求,整个人就很拒绝,现在会好好想产品的出发点,会和产品讨论交流。切入正题,先说说17年的收获。
1. 智能门铃交互系统
门铃(对,就是你家门口的那个门铃) + Server + iOS/Android App实现语音通话的功能。相对于传统的用户按门铃来说,这里给用户提供了通过app响应访客的按铃操作。之前也做过一个视频通话的项目接下来会讲。但核心功能用的是第三方的SDK。这个系统只用到了通话功能,所以我们选择了自己开发。数据传输是通过tcp长连接的方式。Server进行数据的转发。这个项目的每一个细节我认为都可以拉出来单独讨论。如: tcp粘包丢包下的数据解析,回声消除,缓存设计,AudioQueue录音播放功能的底层实现原理,...等等。除此之外,我们的视觉设计师很棒,里面有很多不错的视觉体验也是要花一些时间的(奸笑)。在音视频开发中,想要成为一个可以说话的人,当然还相差甚远。路漫漫其修远兮,吾将上下而求索。
2. 云对讲
和门铃的功能差不多,但更高级一点。视频对讲,毕竟用的是专业的SDK。是由门口机(就是小区门口的对讲机子) + JusTalk Server + Server + iOS/Android App实现视频通话的功能。这个相对上面的系统来说就省去了很多活,核心功是由JusTalk提供的SDK。我们只负责接入SDK,以及接收各个通知消息并做相应的处理就行。这套系统中我们接入了iOS8推出的voip推送,以及iOS10推出的callkit。CallKit在很大程度上提高了用户体验,我们用的QQ和微信都使用了CallKit。当然其中也有一些坑,我也被坑的很厉害。我就不造轮子了,这里有一些轮子个人感觉很扎实。
苹果官网的也有Demo,传输门:SpeakerBox 。
3. SmartConfig WiFi配置
原理网上也有很多,大概就是手机通过UDP广播,把AP(Wireless Access Point 也叫无线访问接入点)的相关信息组帧发出。而WiFi模块一直处于UDP监听状态,获取到AP信息后(如WiFi的用户名和密码),WiFi模块便可以接入AP。开发必须要有支持SmartConfig的硬件。如图示。
不同供应商的SDK可能略有区别,但是原理都是一样的。下面两个传输门仅供参考,具体还要根据供应商而定。
4. 定格动画
上半年我夜夜兼程😆的帮朋友的朋友做了一个单机项目。虽然是单机的项目,其复杂难度一点都不亚于同Server交互。数据的操作都在本地。那么对于数据库的要求就比较严格。除了一般的增删改查以外,还加入了事务的操作确保数据的正确性。这里也借助了第三方框架FMDB,如果用SQLite我应该会吐。FMDB就已经足够让我小心翼翼了。
所谓定格动画,是可以把多张图片合成视频。同时,也可以把视频分解成图片。这两大块的资料确实少之又少,在我的发际线越来越高的付出下,小有成果。
5. 其它
对于Swift的学习,一直是现在进行时...还没有花时间去做一个Demo整合一下学习的东西。就很容易顾此失彼的学了后面忘了前面。Stack Overflow上的分析数据显示,Swift和Angular是增长最为明显的技术。大前端才是未来的发展趋势。
以上。2017年学习到了很多,不止是技术上的,当然,还需要学习的更多。去年的目标尚未达成,写博客的时候总觉得自己要写的东西,前人都造好了轮子,自己没有什么特别的见解,就不想写。希望在2018年自己能够突破自我,写20篇技术类博客(不限于iOS)。