我做了一个叫 Roam FM 的电台 App,macOS 原生应用,核心玩法是在地球仪上随机播放全球电台,每次点击,地球仪都会转到一个新的角落,听得见声音,也看得见它来自哪里。电台数据来自 Radio Browser,一个开源的社区驱动目录,任何人都可以免费使用。
代码写完的那一刻,我觉得最难的部分已经过去了。没想到,真正的阻碍才刚刚开始。

注册 Apple 开发者账号本身就折腾了一阵,这个以后再说。拿到账号之后我非常兴奋地提交了第一个版本,满心期待上架。
然后 Apple 给了我一封拒信。
理由是 Guideline 5.2.3,说我的 App 提供了「对第三方音频流的潜在未授权访问」,要求提交书面证据,证明我拥有这些电台内容的所有必要权利或许可。
我很困惑。Radio Browser 是开源的社区目录,数据协议是 public domain,电台是自愿把流媒体地址提交上去的。我的 App 不录制、不下载、不存储任何音频,只是实时播放这些公开的流。
但 Apple 不这么看。
与审核团队的拉锯
接下来半个月,我反复尝试说服审核团队。
第一轮,我详细解释了 Radio Browser 的开源性质和数据协议,附上了官网声明,列举了 App Store 上已经在用同样数据源的其他应用。审核团队的回复是一封模板拒信。
第二轮,我重新写了一份更完整的说明,完整引用了 Radio Browser 的 public domain 声明,描述了 App 的技术行为,也列举了多个同类应用作为先例。这一次回复多了一句话:「虽然网页来自一个开源项目,但页面本身收集的是流媒体服务,无法保证合规。仍然需要文档证明。」
第三轮,我换了策略,不再强调「开源免责」,而是做了一份技术审计报告,逐条检查 App 里涉及的电台流地址,确认没有任何认证机制和版权保护措施。把报告作为附件提交。回复,还是同一封模板拒信。
到这里事情已经很清楚了。Apple 要的不是技术解释,而是每一家电台的授权文件。对于一个聚合了全球四万多家公开电台的 App 来说,这基本上做不到。
其实这个问题不新鲜。2020 年,一个叫 The Bat Player 的 AppleTV 网络电台应用就遭遇了几乎一样的经历,同样的审核条款,同样被要求提供授权文件,同样用的是 Radio Browser 的数据,最终被迫下架。六年过去了,Apple 对这类应用的态度没有变。
向同行求助
审核严格可以理解,真正让人困惑的是这套机制本身像一个黑盒。同样的数据源,同样的技术方案,有的应用顺利上架了,有的被反复拒绝。
既然规则不透明,最直接的办法就是去问那些已经通过的人。
我在 Radio Browser 官网上找到了一份使用该数据源的 App 列表,挑了几个已经上架 App Store 的同类应用,给开发者发了邮件,说明了自己的处境,请教他们是怎么通过审核的。
让我意外的是,每个回复的人都很友好。
FrogRadio 的开发者 Rob 说,他几年前也遇到过同样的拒绝。他当时告诉审核团队,电台流地址是公开的,Radio Browser 的政策也明确说明数据免费供所有人使用,电台是自愿提交的。这个说法对他有效,但他也坦言,对很多开发者并不奏效。他的原话是:「Apple does not seem to want more radio apps.」
Bedside Radio 的开发者 Ian 更慷慨,直接分享了他提交审核时写的完整说明文本。他补充说,自己每次更新 App 的时候都会担心再次被拒。
这些回复让我踏实了一些,也说明了一个事实:同样的理由,有人通过了,有人没通过。
感谢 Rob、Ian,以及其他回复了我邮件的开发者们。独立开发者社区的互助精神是真实存在的。
放弃 App Store
反复几轮之后,我决定不再周旋了。App Store 的门进不去,那就换一条路。
缺的东西其实就四样:下载、更新、付费、发现。
下载和更新,我放到了 GitHub。安装包托管在 Releases 上,应用内接了一个开源的自动更新库 s1ntoneli/AppUpdater,用户打开 App 就能检测新版本并一键更新。这一切完全免费,感谢 GitHub,对独立开发者来说是非常友好的基础设施。而且没有了审核流程,发版和更新也变得自由许多,改完代码就能直接推给用户。
付费,我选了 Gumroad。调研了一圈之后,这是我能找到的最简单的方案,不需要自建服务器。用户购买后拿到一个 License Key,在 App 里激活就行。流程比内购粗糙一些,但也有好处,比如可以拿到用户邮箱,方便后续沟通,结款也更快,一周一次。
发现,是最大的变化。没有了 App Store 的搜索和推荐,所有用户都需要自己去找。这意味着我必须自己对全部流量负责,认真想怎么让产品被人知道。某种意义上这反而是好事,它让我不能把 App 扔到商店里听天由命。
回头看
放弃 App Store 不是一个轻松的决定。对于一个新 App 来说,App Store 意味着信任,意味着用户可以自然地搜到你、一键付费、不需要犹豫安装来源是否安全。这些东西,独立分发很难替代。
而且这也意味着,最初想做全平台的设想不得不放下了。我一直觉得 Roam FM 在 iPad 上才是最理想的形态,像一台真正的全球收音机,手里还有一个可以把玩的地球仪。这算是一个小小的遗憾。
但事情总要往前走。Roam FM 现在活得好好的,只是不在 App Store 里而已。