商业转载请联系作者获得授权,非商业转载请注明出处。
作者:磨牙行者
链接:http://zhuanlan.zhihu.com/moyaxingzhe/20150276
来源:知乎
今天遇到个怪事,某O2O产品的ios版竟然可以直接在第三方网站下载并安装。
想知道原因,在知乎上提问,却苦于一时半会儿没人回答,于是我到网上查,发现并没有很好的答案,一般的说法都是说要么越狱,要么是开发者账号可以随便安装,要么说企业版应用需要有个什么授权文件什么的还可以在设置里查到,很明显前两种答案都不对,第三个答案令人似懂非懂。
我当时并没有看到授权文件的下载过程,所以只能猜测我们不知道地方出了什么鬼,也就是说是由微信或者其他超级APP预先在机器里放了授权文件,然后装测试版应用的时候机器就允许下载。
本来到此为止了,但后来在参加该产品的线下活动时加了一个群,我鬼使神差地在这个群里问了这个问题,没想到群里居然有几个人回答我,有路人甲,也有该公司的运营人员,路人甲MM说这个是IOS应用企业签名,上淘宝花钱就可以(这让我想起当年的诺基亚证书),该公司的运营同学则说就是用了http://fir.im这个平台的服务。
所以正确答案是http://fir.im帮他们实现了这个。
但这算什么答案呢?于是我去http://fir.im翻了翻,没想到这个网站太文艺,没法直接看到产品功能介绍,只好看技术文档,我对IOS完全不了解,勉强看了几眼,大概猜测他们是提供了SDK,主要帮助APP把用户的UDID找出来,有了UDID就可以成功安装了。
然而事情好像没这么简单。我又去看了一下网上有人写的《使用IOS企业版证书发布应用》,整个流程并没有提什么特别的技术,核心在于你得有一个企业版appleid,换句话说需要有一个企业级的开发者账号,这个发布方式其实就是In house方式,也就是说专门应用于测试阶段的发布方式。
所以淘宝上那些签名服务的核心资源实际上他们的appleid,和UDID并没有关系。
然而UDID到底有什么用呢?我又去查了《从iOS证书申请到签名文件生成》这篇文章,此文讲的其实是所谓ADHOC方式发布测试应用的办法,其中有一个关键点是要把设备UDID填进去,说到底就是特定的设备可以安装这些应用,这显然不能用于对外发布啊,哪怕是内测用这招也不太好吧。
然而http://fir.im确实是提供了网页获取UDID的服务的,我猜测整个流程是通过网页在线拿到UDID,在下载的时候生成针对该用户的安装包。
总结起来说,就是有两种方式来实现脱离APPSTORE的应用发布,一个是用企业appleid来进行in house式发布;另一种是在线获得用户UDID,实时生成针对每一个设备的测试安装包。
顺带说一下,这件事最神奇的地方在于同事下载这个应用是通过一个他并没有关注的公众账号实现的,没有关注,是谁帮他关注的呢?起初我以为是人家和微信有勾搭走了后门,后来那位运营同学一句话就挑明了,用户在线下用了微信支付,而微信支付完之后会默认勾选关注开发方的微信公众账号,仅此而已。惭愧,亏咱搞微信搞了这么几年,最新的情况都没跟进了,有点小事都迷糊。
结论就是:绕过APPSTORE发布IOS版应用并不难,且未必需要再花钱。
题外话,本来想就这个事做个自我批评“研究什么都不用心浮光略影难成大事“,但是想想浮光略影也是必然,我又不是程序猿攻城狮,搞清楚这些事的目的无非是了解哪些事可做哪些事不可做,可做到什么程度需要什么资源,浮光略影扒拉几下搞清楚一个事也是一种本事,知足吧!