创业团队 iOS 开发的小技巧 (一)

真的是好久好久没有发文章了,其实攒了不少篇草稿:深入浅出 AFNetworking、如何阅读 crash 文件、UIKit response chain 等等,但是基本上,还没放出来,国内外的大大们写了同样的内容,而且基本上我想表达的都说了,写得还比我写得好。

但作为一个有输出的男人,还是要写点什么的。但我能分享给大家的除了创业经验,作合伙人的经验,也就剩下这种提升单兵作战能力的,歪门邪道小技巧了。于是,这里就准备开坑写这个系列。不过我这里推荐的基本上都是国内服务,但是大可放心,我完全没有收任何好处费,大伙儿批判的看就好了

躲避敏感审核点——友盟在线参数

作为一个 iOS 开发,每个版本的 Boss 从来不是产品狗的各种奇怪的 feature,最可怕的莫过于以各种奇怪的被拒绝。常见的解决方式就是,给苹果看到的时候,是绿坝后的版本。过了审核之后,就把绿坝卸载了。

对于大团队来说,他们有足够的人力物力造轮子,这种刚需肯定是由自己服务器来控制的。但是对于像礼物说这种,仅仅只有四个人的开发团队(iOS / Android / 后端 / 前端),造轮子的时间是绝对没有的。友盟在线参数绝对是个非常好的选择。不过这个功能藏的比较深,不是特别好找。

其实,在线参数并不只是提交审核用。不知道大家有没有记得去年 iOS 7 越狱的事情,太极的商店被封在了官方越狱安装包里面。事情败露了之后,对方直接远程关掉了太极这个模块。这里就是用的同样的思路。

由于团队小,测试经常不充分,乌龙事件常有发生。再加上审核周期非常长,好不容易上线了发现在某个系统版本号或某个特殊的设备型号测试的时候遗漏了,有重大的 Bug…但是又不可能下架,申请加急又要等一两天。短短的两天可以毁掉运营团队的全部努力,五星应用瞬间变成三星半(别问我为啥这么懂😂),这个时候通过在线参数远程关掉就好了。只要修改掉对应的更新文案,对于用户来说不会出现太大的问题。(当然这个月的绩效没了是肯定。

所以我们在开发的时候应该,把新增的模块都加上动态开关。但这里注意一个问题,友盟的刷新在线参数的 API 不是同步请求,如果要想做到拿到在线参数再进入应用,需要监听UMOnlineConfigDidFinishedNotification,以及千万不要在 appdelegate 里面等这个通知而阻塞主线程,乖乖写一个一模一样的 Splash页面,因为虽说看起来没啥问题,但是在某些系统上会出现 SpringBoard 崩溃的问题(也不要问我为什么这么懂)。

推广运营诊断异常的好帮手——Scheme

  • 情景一:作为一个创业公司出品的应用,经常会面临运营团队、推广团队、商务拓展团队(虽说是用了团队这个词,但其实😂)做一些奇奇怪怪的需求,比如点击 Banner 要跳到一个奇怪的地方:有可能是一个 WebView;有可能是别人家的 app 页面;有可能是 AppStore 的下载链接;有可能是 App 内部的某个特殊页面等等。打开方式也多种多样,例如需要先登录再打开,可能需要 navigation push,可能需要 present。

  • 情景二:某个热心用户和你说她遇到了Bug,程序无法正常运转。虽说这个时候用 adhoc 的方式,可以诊断问题,但是也有可能重装了就好了,失去了重要的样本信息。这个时候要是有方式打开调试模式就好了,例如浮动显示一个 Log 窗口、会 alert error、远程打印 log 之类。

  • 情景三:app 内部的某个 html5 小游戏要和原生代码做交互之类。

这个时候,整个 UI 页面全都用 Uri 来驱动就方便啦。有点像 Android 的 Intent,我只关心 target 和 extra。而不是需要跳转的时候。先 new 一下,然后 set 一大堆 property,再 navigaitonControler push,耦合度也降低了很多。

对于情景一,情景三就不必说了。相信大伙儿肯定都懂得,不懂的可以参考一下 HHRouter 这个库,这里说一下情景二。

这个做法,第一次见是在 OmniFocus 的手机版上见到的:

1
2
3
4
在 iPhone 下打开以下链接可以把语言切换为英语:
x-omnifocus-debug:set-default:AppleLanguages:(en)
如果要还原成系统语言,在 iPhone 下打开以下链接:
x-omnifocus-debug:reset-default:AppleLanguages

摘录自这篇文章

于是,我们也可以通过这样的方法,开启 Debug 模式。例如发给用户一个 liwushuo:///debug_mode 之类的东西。

特别是配合 wax,诊断疑难杂症更加的得心应手。我下篇文章会来好好说一下,Wax 这个东西。

最后一点废话

创业公司、大公司、外包团队,对于技术栈的要求是完全不一样的。

例如,前一段面试了一个搜房网的 iOS 开发组长,得知他们有几十人的 iOS 开发团队,我当时都惊呆了,这种事发生在我身上的话,想都不敢想,如此充沛的人力物力啊,羡慕嫉妒恨。

外包团队,更不用说,绝大多数都是只求最快,不求最好,不用考虑后期维护成本,代码优雅程度。毕竟像老郭的 GeekZoo 这样有逼格还是少数…

而创业公司,既要单兵作战,还要与其他部门联动,同时还要躲开苹果爸爸的审核。所以要竭尽所能的做到灵活,动态,稳定。如果你说使用跨平台的解决方案,例如 facebook 的 react-native,还是再观望吧。基于这个写的Facebook Group,App Store 评分不是很理想的,评价都是界面过于简单啊,之类的。

我一直很喜欢一句话,感觉很适合创业团队的开发者:“君子生非異也 善假於物也”。我们知道我们能力和大团队 PK 是以卵击石,所以我们知道只能以弱者的方式活着,竭尽所能的利用好外力,扬长避短。

iOS

Comments