写在首个单兵作战的iOS app上线后
开发文档
前言:
榕易骑的app v1.0.1已上线
APP 链接
两个月的时间,对我而言是一次完整的尝试。两年前从嵌入式转岗做iOS起,心中不可避免的萌生出“我要开发一个完整APP”的念想。
鉴于公司的主营业务并非移动端APP,而是依托于实体产品下提供相应的软件服务,平日里工作的大部分内容倾向于对外提供SDK,即“二次开发的套件”
(second developing kit),完整而由头至尾的开发一款iOS app的经验少之又少。有感于此,这一路走来,我从一个开发硬件pcb layout 出身,做过FPGA和嵌入式,开发思维限于面向过程(C语言)的开发人员,毫无引路人的转向iOS,不得不说,付出了很多(不好意思,自顾自地说了一堆)。
iOS的科普及现状
第一段为免贻笑大方,如果是程序员可以直接跳过了,不过是做些简单的介绍。
iOS 大约是从2012年左右,随着iPhone
的大热兴起的。对于一个2010年毕业的从业老兵,我甚至起初不知iOS为何物,(同样也错过了最好的风头)。但随着苹果在中国风生水起,越来越多的人使用他们家的手机,良好的生态和精巧的做工吸引到的不仅是普通用户,还有一批嗅觉敏锐的开发人员趋之若鹜。以至于当年号称在App Store
上能写一个hello world
发布,都可以赚上一笔。移动端和智能手机的大热,也伴随着用人单位对这批开发人员的高价聘用。
安卓以其良好的开源性,以及低廉的价格,参差不齐的中低高端手机占据着大部分的用户数。但也因为JAVA自身对内存垃圾的回收机制问题,卡顿和廉价带来的劣质用户体验也饱受诟病。
相对的,iPhone和iOS系统的出现,则更像一个高高在上,出身优越的贵族。相对于安卓安身立命的开源,苹果则一直反其道而行之。优质的内存管理机制和良好的系统优化,虽然开发语言同样饱受其他程序员的诟病,但并不影响他牢牢掌控着高端手机的霸主地位。
一个多月前,我在开发榕易骑
的某一个阶段时,曾在简书上写了一篇开发日志并分享到了朋友圈。拙荆帮忙在她的朋友圈推了一次文,好些朋友在问哪里可以下载和安装。在此稍稍科普下安卓和iOS在这点上的区别。如上所述,安卓的版本,可以在任意时刻,程序编译后生成一个安装包(.apk)文件,给任何满足版本要求的安卓系统安装,但是iOS不行。
许多试图选择移动开发的程序员在一开始面临 Android or iOS ?
的问题上总有过一番挣扎。最终选择安卓的理由里,有一部分和iOS相关的原因如下:
- 昂贵的开发费 —— 首先你要有一台MacBook,一台iPhone,还有一个苹果的开发者账号+AppleID.前两样也就罢了,毕竟是能拿在手上的实物。开发者账号是什么东西?我们戏称之为
苹果软件税
,99刀合人民币688大洋每年的价格,让太多的人望而却步。 - 开发后测试app必须通过开发者账号获取证书+签名,而一个开发者账号只能对100台设备授权。再啰嗦一句,每台设备(iPhone或iPad)都有一个唯一的设备识别码,我们称之为UUID。可以通过证书,对在允许的列表(你可以理解为白名单)内的设备进行授权签名后,你才可以通过软件将一个.ipa的安装包安装到你的手机上。
别的不说,上面的两点,不说对于普通用户,哪怕是新手开发人员来说都是很不友好的。意味着我还未尝到甜头的时候,已经要付出一笔不菲的价钱作为入伙费(也可以理解为投名状?)。
iOS的现状
说一些个人的开发。从15年下半年开始到16年,iOS的风头已经退去,抑或换句话说,我们的用人单位更趋向于理性的录用那些真正在这个领域有建树,有所沉淀的高级程序员。,这是好事,但同时在客观上也造成一个“高级程序员不好找,初级程序员满街跑”的尴尬现状。像我这样已年届三十的,从硬件到嵌入式再到iOS的“老兵”,的确无比尴尬。
回头看,福州这个地方不如北上广深,那么浓厚的互联网潮流前沿以及城市内充斥着顶尖人才和机遇的一线城市。甚至于不如同省的厦门。打个比方,福州对于技术潮流的动向,好比是“海洋性气候”,对温度的变化往往后知后觉,笨拙的有些令人无奈。
iOS开发自身而言,也遭受着“内忧外患”。我打引号的原因是,或许我要阐述的东西,不一定是内忧外患,也可能是往后开发的走向和流程的一种对立统一。
- 内忧 ——
swift
和objective-C
之争。作为一个称不上“资深”
的iOS开发人员而言,OC是入门语言,swift则是一个让人感叹“宣父犹能畏后生,丈夫未可轻年少”的后起之秀。网上有很多选OC还是swift作为入门语言乃至主流开发语言的争论。私下也看过几位大牛写的文章。客观的现状是,作为已经提供出去的稳定的软件产品/套件,OC无疑已经是稳定的输出。swift固然轻巧,但窃以为还没到花大力气学习的时候。 - 外患 —— 前端的兴起。所谓前端,通俗的理解就是网页。现在大部分公司推出的应用,都需要安卓/iOS,而新兴火热的前端则可以让安卓/iOS 仅使用一个原生的容器作为载体,加载网页生成的控件,实现一套代码下的跨平台。前端的兴起,继续蚕食着本就已经趋于平和的移动端。
榕易骑
或许很多人看到我写这个APP的时候第一反应是我想蹭共享单车的热度,其实完全不然。写一个便民自行车的站点查询APP,是我从15年开始就曾经隐约有过的想法。原因很简单,当时我刚从上家公司跳槽,现在在的公司有班车接送,但是上车点离小区有一段距离,需要福州本地的便民自行车作为连接。当时就有很多腹诽,比如我借了车没错,但是究竟到哪里才可以还?当时只有福州的中心城区鼓楼区有站点,且每个站点都贴了一张地图,但是自行车的站点经常会有一些变动,例如新增和改动。然而这些,并不可以体现在一张已经贴好的地图上。
我曾去各大导航软件上搜索便民自行车的站点,但是大多不全。而彼时福州便民自行车的官网上也见不到一份完整的站点地图。退而言之,即使有,当你骑车在路上的时候,通过手机的浏览器去打开那个网址现查,也是很不现实的行为。
那时我就在想,从技术上说,用一个app实现地图查询,甚至于可以查询每个站点有多少个可借可还的桩位,一点也不难实现吧?福州的便民自行车站点硬件设施,是本土的一家公司(这里就不提名了)做的。略带讽刺的是,我和那家公司还算是有点渊源。借换车的方式依靠的是车头伸出的铁柄+墩位上用非接卡感应的电子锁。其实并不需要如眼下的共享单车一般做到每辆车的定位,不存在着拿着手机定位,“众里寻车千百度,单车不知身在何处”的尴尬。
一直拖到去年年底才开始做,一方面是懒,一方面是没有把怎么做,做到什么程度想好。还有一方面就是嫌麻烦。代码还好,美工,原型设计,服务端等等,当时想起来就头大。
讽刺的是,等到技能树积累的差不多,真正开始动手做的时候,共享单车横空出世。尽管我从未想过做一款收费的APP,甚至于做所谓的“创业项目”,单纯的只是想练练手,但共享单车非常恰好的到来,让我的心里确是有些哭笑不得。
二期想做的改进
目前上线的”榕易骑“功能很简单(其实用户群和受众本身就很小),主要包括根据福州五个行政区内站点的搜索,以及周边方圆500米内的全站点定位+导航。
后续要做的是加入搜索功能,可以搜索自定义位置周边的站点。
由于网络断目前是采用寄放的方式,在没有一个稳定的后台前提下,也许数据会不大稳定(因为安装人有限,目前还未发现这个问题)。
因此,我还在自学DJANGO,将自我折腾的路上越走越远。。
心路历程
开发过程中,有将近一半的时间,都用在了画图上。作为一名拥有非专业审美+强迫症的程序员,画图自然非常的费时。我权当锻炼自己使用sketch
的技能了。再安利一边,mac下的黄钻工具,sketch真心好用。正规的互联网运营公司据说都用sketch画好原型,直接丢给程序员自己去切图。
没有后台端的支持真真是件痛苦的事。还是上面那句话,我正在python 和 Django的路上越走越远。
共享单车的看法
共享单车的想法是相当好的。一度我在考虑他是否会替换各大城市政府兴建的各大便民自行车,但从眼下的状况来看,便民自行车和共享单车暂时不是水火不容的情况,更多的是互补。
便民单车更多的是公益性质,他的优点包括:
- 免费 —— 毕竟是政府的公益项目
- 借还站点固定 —— 比起上面提及的单个单车个体定位存在问题,便民单车则是只要知道了站点位置,有没有车则不是软件说了算,而是眼睛说了算。
- 靠政府维护 —— 因为不以盈利为目的,也有人维护,相对来说得到的保护会更多一些。不存在同行间”赤裸裸的仇恨“。
共享单车的有点包括:
- 灵动性,这点和便民单车是互补的。只要你看到了车就可以借,看到有地方停就可以还。不受站点的约束。
共享单车面临的问题(以下结合了个人的见闻和浅见):
- 同行间的倾轧 —— 给你加锁,破坏,下黑手,客观存在
- 用户的破坏 —— 因地制宜吧。君不见莆田某小伙在当地推行共享单车模式,结果血本无归。单车还是在大城市推行较为靠谱
- 维护成本 —— 不知共享单车的维护团队是怎么运营的。有几点困难我想是可以推断的:
- 找车难(和普通用户一样)
- 充电 (车上有GPS模块或蓝牙模块,都需要供电才能保证无线通信)
- 损坏率高 —— 据说例如摩拜那样的单车,在厦门时损坏率在20%以上
- 看车大叔大妈的围追堵截 —— 这是我亲眼所见,不止一次。在比较大的聚集点,如医院门口,市民服务中心门口。以往那些拎着小挎包,撑把遮阳伞,藏在草丛间的看车老头儿老太们,对那些他们看来会影响他们”生意“的共享单车抱有强烈的敌意。他们会将规矩停放在线内的共享单车搬到马路的正中间,甚至和那些还未把车停在他们”辖区“范围内的还车用户争吵,说你不能把车停在这里云云。
今天先写到这里,感谢阅读,以上,谢谢。