乐于分享
好东西不私藏

海外独立创收日记(42)- 我的第一个 iOS App 上架 App Store,被拒一次后终于过审

海外独立创收日记(42)- 我的第一个 iOS App 上架 App Store,被拒一次后终于过审

大家好,我是老李。

前面一篇文章里,我刚写到自己花了 688 元 申请了 iOS 开发者账号,并且用 Flutter 开发了一款 iOS App,提交到了 App Store 审核。

当时 App 的状态还是:

1.1.0 正在等待审核。

今天继续更新一下后续进展:

我的第一个 iOS App,已经成功上架 App Store 了。

不过过程并不是一次通过。

中间经历了一次审核被拒,然后根据苹果的反馈做了调整,重新提交,最后才成功通过审核。

这篇文章就简单复盘一下这次 App Store 上架过程,以及我作为一个第一次提交 iOS App 的独立开发者,踩到的一个坑。


1. 第一次看到“已批准”,还是挺开心的

说实话,看到 App Store Connect 里显示:

iOS 提交:已完成审核

然后下面的审核状态变成:

已批准

那一刻还是挺开心的。

因为这意味着,我的 iOS 开发闭环终于跑通了。

之前我主要是在 Google Play 上做海外应用,上架、广告、内购、收款这些流程都跑过。

但 iOS 这边一直没有真正开始。

这次从申请开发者账号,到开发 Flutter 版本,再到配置 App Store Connect、准备截图、接入内购、提交审核,终于完整走了一遍。

虽然只是第一款 iOS App,但对我来说意义还是不一样的。

因为从今天开始,我不只是一个 Google Play 独立开发者了,也正式进入了 App Store 这个市场。

这一步不大,但很关键。


2. 第一次审核,被拒了

当然,过程没有那么顺利。

第一次提交以后,我满心期待它能一次过审。

结果第二天一看,状态变成了:

被拒绝。

刚看到这个状态的时候,心里还是咯噔了一下。

毕竟第一次提交 iOS App,对苹果审核规则还不是特别熟悉,也不知道是不是功能本身有什么问题。

后来点开审核消息,发现苹果给出的原因是:

Guideline 5.1.2(i) – Legal – Privacy – Data Use and Sharing

简单来说,就是隐私和数据使用相关的问题。

苹果审核消息里提到:

App Store Connect 里的隐私信息显示,我的 App 会收集一些用于追踪用户的数据,比如 Customer Support、User ID、Other User Content 等。

但是 App 本身没有通过 App Tracking Transparency,也就是 ATT 框架,向用户请求追踪授权。

也就是说,问题不是代码崩溃,也不是功能不能用,而是:

我在 App Store Connect 里填写的隐私数据用途,和 App 实际的权限请求没有完全匹配。

这个坑其实挺典型的。

尤其是第一次提交 iOS App 的时候,很容易在隐私配置那里选得比较保守,觉得多填一点没问题。

但苹果审核不是这么看的。

你如果声明了“会用于追踪用户”,那 App 里就需要有对应的 ATT 弹窗,让用户授权。

如果你的 App 实际并没有做跨 App、跨网站的追踪,就不应该乱选相关的数据用途。


3. 真正的问题,不是审核严,而是配置要一致

这次被拒以后,我重新看了一遍 App Store Connect 里的隐私配置。

我发现问题主要出在数据收集类型和用途选择上。

很多时候我们在填写 App 隐私信息时,会有一种心理:

“我也不太确定,那就多选一点吧。”

但在苹果这里,多选不一定更安全。

因为你选了,就代表你承认 App 会这样使用数据。

如果你选了“用于追踪”,审核人员就会检查你的 App 有没有弹出 ATT 授权。

如果没有,就会认为你的实现和声明不一致。

所以这次给我的一个教训是:

App Store Connect 里的隐私配置,不是随便填的文档,而是审核的一部分。

它必须和 App 实际行为保持一致。

如果你的 App 不追踪用户,就不要把数据用途填成 Tracking。

如果你的 App 只是用于账号功能、客服支持、产品功能,就要按照真实用途来填写。

如果你确实接入了广告平台、归因统计、第三方 SDK,并且这些 SDK 涉及跨 App 追踪,那就要认真处理 ATT 授权。

这也是 iOS 和 Android 不太一样的地方。

在 Google Play 上,我之前更多关注的是应用内容、广告政策、内购合规。

到了 App Store,隐私说明、数据用途、权限弹窗、内购审核这些细节,都要更加严谨。


4. 调整以后,重新提交

搞清楚问题以后,我没有急着乱改代码,而是先判断:

我的 App 到底有没有做用户追踪?

如果没有,那就应该调整 App Store Connect 里的隐私信息,让它和真实情况保持一致。

如果有,那就要接入 AppTrackingTransparency,并且在合适的时机弹出授权提示。

这次我的情况属于前者。

所以我主要调整了隐私相关配置,把不准确的数据用途重新梳理了一遍。

调整完以后,再重新提交审核。

从历史记录上看,这次过程大概是这样:

  • 5 月 18 日,准备提交;
  • 5 月 23 日,进入等待审核;
  • 5 月 27 日,进入审核;
  • 5 月 27 日,被拒绝;
  • 后面根据苹果反馈调整隐私配置;
  • 5 月 28 日上午 10:32,再次进入审核;
  • 5 月 28 日上午 10:48,状态变成可分发。

也就是说,重新提交以后,审核通过得很快。

这也让我感觉到,苹果审核虽然严格,但只要你认真看反馈,按要求调整,并不是完全不可沟通。

很多时候被拒并不可怕,可怕的是你不知道为什么被拒,或者看到英文审核消息就不想看了。

其实苹果给的原因一般还是比较明确的。

重点是要把它翻译成自己的实际问题:

到底是代码问题?

还是元数据问题?

是截图问题?

是隐私配置问题?

还是内购流程问题?

找到真正原因以后,再去调整,效率会高很多。


5. 第一次上架 App Store,我踩到的几个坑

这次虽然最后过审了,但整个过程还是让我对 App Store 上架有了更真实的感受。

第一,隐私配置一定要认真填

这是我这次最大的教训。

App Store Connect 里的隐私问卷,不要凭感觉填,也不要想着“多选一点更保险”。

你填写的每一个数据类型、每一个用途,都可能成为审核点。

尤其是 Tracking 相关选项,一定要谨慎。

如果你没有做追踪,就不要乱填。

如果你做了追踪,就要接入 ATT,并且准备好对应的隐私说明。

第二,内购功能要提前准备

这次我在 App 里也接入了内购功能。

因为我做 iOS 不是为了简单上架一个免费应用,而是想验证 iOS 平台的付费能力。

所以内购从第一版就要考虑进去。

产品能不能赚钱,不是上线以后才开始想的。

如果你后面想做订阅、一次性购买、会员功能,最好在早期就把产品路径设计好。

否则后面再改,成本会比较高。

第三,截图和元数据也很重要

App Store 的产品页截图,比 Google Play 给我的感觉更重要。

尤其是面向海外用户时,截图不是简单截几张页面就行。

它要告诉用户:

这个 App 是做什么的?

能解决什么问题?

为什么值得下载?

有没有付费价值?

这次我也花了一些时间准备截图和文案。

虽然还谈不上多专业,但至少比随便上传几张裸截图要好一些。

第四,被拒很正常,不要慌

以前没提交过 iOS App 的时候,总觉得苹果审核很神秘。

好像只要被拒,就很麻烦。

这次走完以后,我反而觉得没那么可怕。

被拒就是审核流程的一部分。

只要不是产品方向本身有严重问题,大部分被拒都可以通过调整解决。

关键是要看懂审核消息,然后对症处理。


6. 从 Google Play 到 App Store,感觉不一样

以前我做海外产品,主要是在 Google Play 上验证。

Google Play 的优势是门槛相对低,上架流程也比较熟悉。

但 App Store 给我的感觉是,规则更细,对隐私、内购、产品完整度的要求更高。

这对独立开发者来说,既是挑战,也是机会。

挑战在于,上架成本更高。

光开发者账号就要 99 美金一年。

审核规则也更严格。

机会在于,iOS 用户的付费习惯可能更好,App Store 的商业价值也值得验证。

对我来说,现在最重要的不是立刻赚多少钱,而是先把这条路跑通。

从开发到上架,从内购到审核,从被拒到过审,这些流程一旦走过一遍,后面再做第二个、第三个 App,心里就有底了。

这也是独立开发很重要的一点:

很多能力,不是看教程学会的,而是自己完整踩一遍坑以后才真正掌握。


7. 下一步,我要验证 iOS 收入

现在 App 已经成功上架了,下一步最重要的就是看数据。

我会重点关注几个指标:

  1. 有没有自然下载;
  2. App Store 搜索有没有曝光;
  3. 截图和标题能不能带来转化;
  4. 用户是否会触发内购页面;
  5. 有没有第一笔 iOS 内购收入;
  6. iOS 和 Android 的用户行为有什么区别。

说实话,我不指望刚上线就立刻有很多收入。

独立开发不能这么幻想。

但我希望通过这次上架,至少验证几个问题:

同样一个产品,用 Flutter 做跨平台,能不能同时覆盖 Android 和 iOS?

iOS 平台的付费转化有没有机会?

App Store 的自然流量是否值得继续投入?

如果这些问题能得到一点点答案,那这 688 元开发者账号费用就不是白花。


写在最后

这次我的第一个 iOS App 成功上架 App Store,对我来说是一个新的小里程碑。

从申请开发者账号,到 Flutter 开发,再到第一次提交审核,被拒,调整隐私配置,重新提交,最后过审。

整个过程不算复杂,但只有自己做过一遍,才知道每一步具体会遇到什么问题。

这次最大的收获不是“我上架了一个 App”,而是我终于把 iOS 这条独立开发链路跑通了。

以后我不再只局限于 Google Play,也可以把自己的产品同步推到 App Store。

对一个普通独立开发者来说,这就是多了一种可能。

当然,上架只是开始。

真正难的是后面的下载、留存、转化和收入。

App Store 不会因为我是第一次上架,就自动给我用户。

市场也不会因为我花了 688 元开发者账号费用,就一定让我赚回来。

但独立开发就是这样。

先把门打开,再一步一步往前走。

这次我已经拿到了 App Store 的入场券,接下来就看这个产品能不能在 iOS 平台上跑出第一笔收入。

如果后面有下载、有内购、有新的审核坑,我会继续记录下来。

我是老李,一个还在路上的独立开发者。

我们下期再见。