# 从苹果下架 Airfoil Speakers Touch 说起

- 作者：杜会堂
- 发布时间：2012-05-25 18:57
- 分类：特稿
- 原文：https://www.ifanr.com/91785

[![Rogue Amoeba](https://s3.ifanr.com/wp-content/uploads/2012/05/Rogue-Amoeba_thumb.jpg)](https://s3.ifanr.com/wp-content/uploads/2012/05/Rogue-Amoeba.jpg)

Air Speaker Touch 最早诞生于 2009 年，是一款由 Rogue Amoeba 小组开发的音频传输类应用。用户可以通过安装在 Mac 或 PC 上的 Airfoil 客户端，向他们的 iPhone、iPod Touch 或者 iPad 发送音频，然后在移动设备上再通过 Airfoil Speakers Touch 接收保存。上个月，Rogue Amoeba 小组发布了最新版本的 Airfoil Speakers Touch 3。在这一版本中，用户可以直接从 iOS 设备上接收音频，这比过去又方便了许多。然而好景不长，就在今天，Rogue Amoeba 小组在[博客](http://rogueamoeba.com/utm/2012/05/24/apple-has-removed-airfoil-speakers-touch-from-the-ios-app-store/#fnr1-20120524afstremoval)中宣布，Airfoil Speakers Touch 应用已经被苹果从 App Store 下架了。

这种事当然令人非常沮丧，不过问题是苹果为什么要移除 Airfoil Speakers Touch 。虽然苹果此前有过针对山寨应用和流氓应用的[打击活动](http://www.ifanr.com/72072)，但 Airfoil Speakers Touch 显然不属此列。Rogue Amoeba 小组在博客中称苹果在两天前就曾通知他们这个的决定，不过直到今天，他们依旧搞不懂苹果为什么要将 Airfoil Speakers Touch 下架。在博客中，Rogue Amoeba 毫不掩饰自己的困惑和不解，它不无委屈地抱怨道：

> 然而，我们在苹果为什么会移除 Airfoil Speakers Touch 这个问题上始终无法得到一个明确的答案。不用说，我们对他们的决定感到非常遗憾。

不过，著名科技博客作者 John Gruber 在个人博客 [Daring Fireball](http://daringfireball.net/) 对此表示了怀疑。他说道：

> 在 Airfoil Speakers 登陆 App Store 的前三年里，双方一直相安无事。而就在 Airfoil Speakers 升级到第 3 版之后的一个月，苹果忽然决定移除应用。问题肯定在于 Airfoil Speakers 中增加的新功能。

因此在回答这个问题时，Gruber 主张从新版的 Airfoil Speakers Touch 3 上寻找答案。在[文章](http://daringfireball.net/2012/05/more_on_airfoil_speakers_touch)中，Gruber 首先引用了一段 Airfoil Speakers Touch 3 应用的自述：

> Airfoil Speakers 其他的主要特征还包括一些强化的音频接收功能。只需支付少许费用，你就可将你的 iOS 设备进化成功能完备的 AirPlay 接收器。这意味着你可以在 iOS 设备中自由传输音频，或者，甚至是直接将 iTunes 中的音频传输到 iOS 设备。所以，在已经拥有 iOS 设备的前提下，为什么还要花费巨资购买昂贵的 AirPlay 终端呢？

而事实上，苹果并没有为任何应用提供 API 使之成为所谓的 AirPlay 接收器。因此 Gruber 对 Rogue Amoeba 的声明表示怀疑，他认为他们改写了协议，使他们的 iOS AirPlay 接收器在工作时仅仅执行公共的 API。但问题是，苹果强调的重点在于 iOS 应用不可以调用 AirPlay API 使之成为 AirPlay 流媒体的接收器。尽管在 App Store 开发者指南中没有明文禁止这点，但苹果的态度已经很明确了。在 [App Store 指南概述 2.5](https://developer.apple.com/appstore/resources/approval/guidelines.html) 中，有这么一条规定：

> 任何使用非公共 API 的 apps 都将被禁止。

[iOS 开发者程序许可协议 3.3.1](https://developer.apple.com/appstore/resources/approval/guidelines.html) 中也明确表示：

> 应用须使用按苹果描述的方式备案的 API，不得使用以及调用任何私有的 API 。

说到底，“非公共 API”和“私有的 API”就是一回事。或许事实真如 Rogue Amoeba 小组在博客中所言，他们并没有使用私有的 API 。但问题是协议 3.3.1 强调的是“按苹果描述的方式备案的 API”，这个一个相当宽泛的定义，其意思大致可以理解为“你不应该使用私有的API，更不应该使用公共的 API 去做我们不希望你做的事”。

类似的意思在 App Store 指南概述中也可略见一二，比如最后一条看起来就相当的有趣：

> 这是一个不断变化中的文件，随着新应用的加入，将会带来新的问题。所以，任何时候都可能导致新规则的诞生。或许，你的应用就会触发这个问题。

对 Airfoil Speakers Touch 下架这件事，还有人猜测苹果要在 iOS 6 中推出类似的功能，故而将其移除。对此，我不赞同。我觉得这太小觑苹果了，作为全球屈指的以创新著称的科技公司，苹果尚未落魄到要封杀他人来获取创意。退一万步讲，即便如此，商业收购也远比下架封杀来得意义长远。

不过有一点却是必须要明确的，在苹果的开发指南中，类似上述预带回旋余地的规则还有很多，开发者们肯定不可能去一一揣度会意。所以，对于他们而言，与其苦心积虑地寻找协议上只言片语的漏洞，或表意不清的描述，通过打擦边球来获取收益，倒不如老老实实地遵守协议，在规矩内做出有价值的产品。刀尖跳舞、火中取栗本来就是风险系数极高的事，且不论回报如何，单从公司的长远发展来看，这些都是不值得去冒险的。

题图来自 [Rogue Amoeba](http://rogueamoeba.com/)
