您现在的位置:主页 > U艺生活 >PTT好读版开发经验谈 >

PTT好读版开发经验谈

栏目:U艺生活 | 来源:http://www.5599js.com | 时间:2020-06-08
PTT好读版开发经验谈
前言

小弟与 Raincole 合力开发的「PTT 好读版」上架快满一个月了,期间得到不少迴响与帮助,特别撰写此文聊表分享与感谢。

一切从一场黑客松开始

那是个晴朗的午后,刚载完女友去上课的我,脑中浮现一个疯狂的点子:「应该要有一个 PTT App 乘着 iOS 7 的更新一起推出。」所以就在一次的下课中,我跟伙伴就敲定了要进行这个专案,代号 iPTT,不知天高地厚的设定开发时程为一个星期。然后我们也规划了一天来做黑客松。

黑客松的开始总是美好的,儘管事前已经做了準备,但千算万算我们都不会发现这背后的技术难度比我们想像中还来的高。那天我开心的画着设计,Raincole 开始写 parser。到了后来才发现事情没有我们想像中的单纯。

黑客松的尾声就是两个人合力钻研 parser 该怎幺写但却一筹莫展的奋斗到了天亮。

儘管隔天回家后,一些基础问题被解决了,解析器的开发也慢慢上轨道。我们这也才发现一个星期的时间完全不够用,我们都过度的自信跟自负。于是一个星期的时程变成一个月,然后再变成变成三个月。直到我们把那个叫做 MVP 的待办事项都清完后,就送交审核了。

然而所有荒腔走板的事就在我们送审后发生。

苹果的 reviewer 完全无法使用这个 app,Curpertino 内的 WiFi 似乎被东方神秘力量给挡在 PTT 的伺服器外,我们试了很多解决方法但却依旧吃闭门羹。儘管后来 PTT 的伺服器终于可以连得上了,但再加上一些非预期的 bug 总在 reviewer 审核时才出现,三个月就这样过去了。预定释出的日期从圣诞节延到农曆新年,再延到开学时才真的成功通过审核,期间我们被总共退了七次。

对我们而言,这是一个磨练心智的开发过程,因为儘管你知道苹果有严厉的审核标準,但你却不会知道所有的 bug 跟无法控制的因素都会在 reviewer 开始审核 app 时一路冒出来。教训就是如果你想要投资 iOS 平台的话,请确定你已经準备好了,否则只是徒耗精力。

批踢踢的行动体验

谈完开发的辛酸血泪。而为了加强已读未读的对比,已读文章的标题也会被淡出。

PTT好读版开发经验谈

最后的结果如下图,去除多余的,留下重要的,因为少即是多

PTT好读版开发经验谈

App 中还有其他微小的细节,你可能不会去特别注意到,但是就是这许多的细节串连起来,才让好读版使用上能够如此舒适而自在。

崭新的技术架构

终于来到技术架构了,由于 Raincole 不会写 Objective-C ,所以在好读版的开发中他贡献了他最擅长的 JavaScript。

在一个从溼度计到浏览器都可以跑 js 的年代,谁说 iOS app 没办法直接执行 js 的!

苹果在 iOS 7 的释出中藏了一颗没有什幺人注意到的珍珠 -- JavaScriptCore。JavaScriptCore 简言之就是一个 js 的 runtime,传统上要让原生的 app 跑 JS,方法不外乎用 WebView 然后手刻传递 message 的方式跟协定。JavaScriptCore 的好处是让你不用载入肥大的 WebKit,更棒的是还有原生的 bridging support。

回到好读版,我们背后的批踢踢解析器完全都由 JS 实作,Objective-C 这边则透过定义好的 API 跟解析器做请求,然后再将资料呈现出来。

乍听之下疯狂的架构,但实务上却让我们之间的开发几乎平行。我可以专注在 UI/UX 上,而我的伙伴则可以专注在 API 的稳定度跟速度。更有趣的是,我的伙伴进行开发时,可以完全用 node.js 来进行,不需要编译 Objective-C 也不用开模拟器。

结语

我们都知道产品上线后才是真正的开始,不过光是开发或许就是一趟有趣的旅程了。万分感谢过程中给我们回馈跟帮助的使用者、朋友与前辈们。没有你们的爱戴跟支持,我们不会有动力继续前进。

最后,小弟我将在 3/21 号的 HackNTU 开发小聚 中分享这一次的开发经验,当天你可以听到更多的内幕、技术细节以及辛酸血泪,期待在那天看到各位 :)

上一篇:
下一篇: