两天四夜上线一个 App


Update (04/27/2016):我争取每两星期(通常是每周)发布一个新版本,不断迭代这个 iOS App。这是 App 的更新日志。本文的截图与实际 App 的长相已经偏离比较远了,请到 App Store 去看最新的 App 版本的长相:)

这是关于湾区日报 iOS App 的故事。

标题党了。解释一下:两天四夜 = 周六、周日两天 + 周六晚、周日晚、周一晚、周二晚,4个晚上。

什么是湾区日报?

如果是新读者,请参考这篇博文:【湾区日报是如何运作的

为什么湾区日报需要做 App?

有几个理由:

  • 移动设备是大势所趋。湾区日报的网站此时的访问情况如下图,大部分都是移动设备的访问了:
  • 借助微博微信等社交网络推送网页,有很大的局限性:国内读者访问国外的网页比较慢,而且很多网站被墙。
  • 我是工程师,动手做东西是一种乐趣。也正好想尝试一下做 App。

为什么只做 iOS 不做 Android?

我是 iPhone 用户。为什么?因为几年前碰巧买了 iPhone。没特别强烈的理由换 Android。在我看来两者差不多。如果一开始我用的是 Android,应该也没强烈理由换 iPhone。

做一个每天自己也会用到的东西是很不错的感觉。所以我就做一个 iPhone 上能用的 App。

以后可能会做 Android app 吧,如果有时间的话。以前我也是 Java 程序员,所以也能写得动 Android 代码的。

这个 iOS App 到底长什么样?

 
 

两个功能我觉得比较有用:

  1. Push Notification,每天推送5条链接。
  2. “易读”功能。我服务器事先把原网页中的文本抽取出来,所以 App 可以只读纯文本,而不用再打开原网页。这还(某种程度)解决了有些网页被墙了的问题。只要湾区日报的服务器不被墙,你就能读原网页的文本,而不用访问原网页。

为什么 App 做得这么烂?

两天四夜,初学 Swift,能力有限,也只能这样了。

或者换一个问题:你该如何才能把这个 App 做得好一点?有几种办法:

  1. 回到过去,告诉几年前的我,千万别读 PhD,一门心思学做 App;找工作的时候,专找做 App 的职位。遵循 10000 小时定律,熟能生巧。然后到了2015年的时候,你就能做出职业水准的 App。
  2. 或者,从今年起,好好在 App 开发方面努力一把。别人12岁开始编程,用功十年,22岁成功。咱今年老大不小了,但也不怕花时间;以XX岁高龄,新手入门,全身心投入 App 事业中。
  3. 维持现状,白天还是做与 App 不相关的工作,晚上回家后如果有空写点 App 的代码、每天进步一点点,慢慢改进。进度会比较慢,相信5年后,在 iOS 14.0 推出的时候,我的 App 应该不那么烂了。
  4. 花钱外包给专业团队 — 此方案已经被家里的领导给否决了。。。

好吧,可能第3条比较适合我的现状。任何东西都是得花时间的。我也很希望一天能有48小时。

这个 App 有哪些有趣的事实?

两天四夜上线 App Store

服务端的 API 部分以前做过类似的,代码重用一下,很快就搭好了。

App 的部分是用 Swift 写的,边学边写。大部分代码是五月底的周末两天窝在家里写完的。周日晚上边看“Game of Thrones”的时候,把 App 分发给10个朋友试用(需要手动添加 UDID,比较费时间)。周一晚上和周二晚上修复了一下bug、做了截图,然后提交 App Store 审核。

插一句,怎么快速用一个压根就没用过的语言写程序?我一般是简单看一下 Style Guide,然后开始写真的代码。。。比如 Swift,我看的是这个 https://github.com/raywenderlich/swift-style-guide 。App 上线后,我才找了一本书,系统地学起来。

用到了哪些技术?

  • XCode 6.3 + Swift
  • 服务端:Python / Django,Postgres,Celery + RabbitMQ 发 Push Notification,传统老套的 Nginx 与 Supervisord
  • App 的访问统计:Google Analytics
  • 跟踪 App Crash 的情况:Crashlytics
  • App 的分发(上线 App Store 前分发给朋友试用一下):Crashlytics Beta
  • Dependency management:Pod
  • 图标设计、简单美工:Sketch
  • 生成 App Icon:makeappicon.com
  • 生成 App Store 上的屏幕截图与跟踪App Store的Review:http://launchkit.io
  • App Store 上的 demo 视频是用 QuickTime 录制,iMovie 剪辑成30秒视频。
  • App 里用了一些第三方的 Library:Spring做特效、FontAwesomeKit做图标、Appirater提醒用户去App Store给App打分、PSUpdateApp提醒用户升级新版本、UIScrollView-InfiniteScroll滚动更新往期文章、微信的SDK做分享到微信的按钮(这个需要提前几天向腾讯申请)。

App 的版本号

湾区日报 App 的版本号不用Semantic Versioning,而是用日期。比如湾区日报第一版的 App 的版本号是 2015.06.02,下一个版本是 2015.06.16。目前计划是两周提交一次。用日期做版本号是跟 Wealthfront 的 App 学的。用日期做版本号的好处是?其实我不清楚诶;但至少可以一眼看出这个 App 有多新(或有多旧)。

在 App Store 里审核的过程中,被拒了一次。修复了一番、再提交,中间又耽搁了几天。从提交到真正上线,前后十来天。

听说还有一个 Apple Watch 上的 App?

对,这是两天四夜以外、又额外用了两个晚上做的。目前还在 App Store 里审核。

 

手表上的 App 有用吗?有人会用吗?不知道。只是单纯想试试看写 Apple Watch 上的 App 是什么感受。至少我自己是不会用手表读文章的:(

在Apple Watch上还没发现有什么特别好、特别需要的App。

有什么感想没?

  1. 你能做的事情比你想象的要多得多,特别是在一段很短的时间里。这就是为什么很多Hackerthon上可以看到很不错的作品一样:由于时间限制,就能高度集中精力、高效地开发。
  2. Swift 很好上手、很好用。期待能在服务端写 Swift 脚本。
  3. 你要的不是源代码,而是思路。有了思路后,剩下的东西基本都能靠 Google、Stackoverflow和Github来帮你完成了。当然,我之前也跟几个做 App 的同事打听了应该用什么工具、用什么库的事情,所以中间少走了不少弯路。
  4. 做 App 不容易。顿时对做 App 的工程师、设计师们肃然起敬。太多细节要把握了。很多普通用户想当然的东西,都是要推敲很久才能弄出来的。

最后,欢迎iPhone用户下载试用:App Store

分享到:


选一种适合你的订阅方式: 33,575 人 · 23,240 人 · 6,686 人 · 6,539 人 · 5,233 人 · 4,866 人 · 1,989 人 · 830 人 · 44 人 · 31 人