独立开发者上线 App 前要准备什么(2026 清单)

2026 年独立 iOS 开发者上线前的真实 checklist:法务、技术、内容三块准备,含最新截图尺寸和定价规则,避免第一次提审就翻车。

按 Apple 自己公布的审核数据(2026 年 6 月),约 90% 的提交在 24 小时内审完,所以独立开发者第一次上线的痛点其实不在审核慢,而在第一天就因为某个字段填错被打回 Metadata Rejected,直接重新排队。解法很无聊:把每一条准备都做完再点提交。这篇按”先卡哪一关”的顺序,把真实清单列清楚。

TL;DR

  • 一个字段填错或缺失(隐私 URL、截图尺寸、App Privacy 选项、年龄分级)就让你重新排队,不会给你一张”请修改”的便条。
  • 截至 2026 年 6 月,必传的截图只剩 iPhone 6.9 英寸(1320x28681260x2736);如果 App 跑在 iPad 上,再加 iPad 13 英寸(2064x2752)。其余尺寸自动缩放。
  • 别再找”Tier 1 / Tier 87”了:Apple 在 2023 年就废掉了编号定价档位,现在是 900 个价位点($0.29$10,000)。
  • 隐私清单(PrivacyInfo.xcprivacy)自 2024 年 5 月 1 日起强制。某个用到 required-reason API 的 SDK 缺清单就是自动拒审。
  • 单条收益最高的一步是在 TestFlight 沙盒里把内购(IAP)测一遍再提交。坏掉的 IAP 是最常见、最该避免的拒审原因。

问题背景

Apple 审核是规则驱动的,不是感觉驱动的。大部分拒审不是”你 App 烂”,是”你某个东西没配好”。独立开发者收益最大的操作,就是把每一条都做完再第一次提交,花一轮审核而不是四轮。这份清单讲的是”点提交按钮之前要做什么”,不讲”怎么做出好 App”。

开始之前

满足这些条件,再照这份清单走:

  • 你已经有一个能在真机上跑的 build。
  • 你已经有 Apple Developer Program 会员(截至 2026 年 6 月 $99/年,按年续费,不是只装 Xcode 的免费层)。
  • 在任何对外发布承诺前还有至少 5 天 buffer。
  • 基本法务实体已经搞清楚(或者就以个人身份发布)。

实操步骤

  1. 创建 App 记录——App Store Connect → My Apps → ”+“(左上)→ “New App”。

    • Bundle ID:必须和 Xcode 项目里的一致(Xcode → Target → Signing & Capabilities → Bundle Identifier)。命名规则建议 com.<你的域名倒序>.<appname>,例 com.yoursite.pockethabits
    • Primary Language:上线后永久不可改(影响展示页默认语言),中国市场优先选 Simplified Chinese,全球先 English (U.S.)。
    • Primary Category:上线后可改,但搜索排名权重很大,慎重。
    • App Name + SKU:SKU 是内部代号,外部看不到,用 appname-2026q2 这种自描述。
  2. 挂隐私政策到固定 URL。用自己的域名,别用免费二级域名。Firebase Hosting(Spark 免费,且允许商用)或 GitHub Pages 都行;Vercel 的免费 Hobby 层禁止商用,App 一旦收费就得上 Pro:

    # 用 Astro 或纯 markdown
    mkdir privacy && cd privacy
    echo "# Privacy Policy for <App Name>" > privacy.md
    echo "Last updated: 2026-05-21" >> privacy.md
    # 部署到 https://yoursite.com/privacy/

    政策必须包含 7 块:收集数据类型 / 收集目的 / 第三方共享 / 数据保留期 / 用户权利 / 数据删除流程 / 联系方式。可直接用 App 隐私政策清单 里的模板填。

  3. App Privacy 表(App Store Connect → App Privacy)。Apple 32 个数据类目逐项过:

    Identifiers           → 用 Crashlytics / Adjust / AppsFlyer 必须勾
    Usage Data            → 用 Firebase Analytics / Mixpanel 必须勾
    Diagnostics           → 几乎所有用 Sentry / Crashlytics 都勾
    Contact Info          → 收邮件 / 手机号才勾
    Health & Fitness      → 用 HealthKit 才勾
    ...

    每勾一项还要选:Linked to User / Not Linked / Used for Tracking。

    第三方 SDK 也算你收集。 核对 Podfile / Package.swift,每个 SDK 都查它的 Privacy Manifest。自 2024 年 5 月 1 日起,凡是用到 required-reason API(文件时间戳、UserDefaults、磁盘空间、系统启动时间)的 SDK 必须带 PrivacyInfo.xcprivacy。Apple 还点名要求带清单和签名的常见 SDK 包括 Firebase、Adjust、AppsFlyer、Alamofire。缺清单在上传环节就被自动拒:

    # 检查所有依赖是否带 PrivacyInfo.xcprivacy
    find . -name "PrivacyInfo.xcprivacy" -exec cat \{\} \;
  4. 截图。截至 2026 年 6 月,Apple 只必传两种尺寸,App Store Connect 会自动缩放到同系列里更小的机型,不用再为每台老 iPhone 单独上传一套。依据 Apple 截图规格文档

    必传(iPhone App):iPhone 6.9"  1320x2868  (iPhone 17 Pro Max)
                        或回退       1260x2736  (旧版 6.9" 画幅)
    必传(iPad App):  iPad 13"     2064x2752  (iPad Pro M5/M4)
    可选(自动缩放):  6.5" 1284x2778、6.3" 1179x2556、5.5" 1242x2208、
                        iPad 12.9" 2048x2732
    格式:PNG 或 JPEG,RGB,无 alpha 通道。每个机型类别 1 到 10 张。

    尺寸必须像素级精确:差一个像素都会被拒,没有容差。推荐用 Fastlane snapshot 自动截图,保证素材永远和运行的 build 一致:

    gem install fastlane
    fastlane snapshot init
    # 在 SnapshotUITests/SnapshotHelper.swift 写 UI test
    fastlane snapshot --devices "iPhone 17 Pro Max,iPad Pro 13-inch (M4)"

    加文字 caption / 设备框用 AppLaunchpad 或 Figma 模板,但 App 界面部分必须来自真实运行的 build(2.3.3 条款禁止用 mock 假装有你根本没有的功能)。

  5. 写 App 名 / 副标题 / 关键词——详细规则看 App Store 展示页文案,核对关键格式:

    App Name:    ≤30 char
    Subtitle:    ≤30 char
    Keywords:    ≤100 char, comma-separated, no spaces
      例: habit,streak,daily,routine,morning,evening,ritual,offline
    Description: ≤4000 char
    What's New:  ≤4000 char
  6. 年龄分级(Age Rating)——App Store Connect → App Information → Age Rating → “Edit”。Apple 给 14 个问题,按 App 真实内容选:

    Cartoon or Fantasy Violence            → None / Infrequent / Frequent
    Realistic Violence                     → ...
    Profanity                              → ...
    Sexual Content                         → ...
    Gambling                               → ...(哪怕只是骰子小游戏也得勾 Simulated Gambling)
    Unrestricted Web Access                → 如果 App 内含 WebView 能浏览任意 URL,必须勾

    做错最常见在 “Unrestricted Web Access”——用了 WKWebView 加载外部链接就要勾,不勾会被拒。

  7. IAP 必须先配再提交。App Store Connect → 你的 App → Features → In-App Purchases → ”+”:

    Type:
      - Consumable                 一次性消耗品(金币 / 道具)
      - Non-Consumable             一次性永久解锁("去广告")
      - Auto-Renewable Subscription 月 / 年订阅
      - Non-Renewing Subscription   定期但不自动续费
    
    Reference Name:  内部用,例 "Pro Monthly"
    Product ID:      代码引用,建议 com.yoursite.appname.pro_monthly
    Price:           从 900 个价位点里选,$0.29 到 $10,000
                     (编号 "Tier" 已于 2023 年废除)
    Display Name:    用户看到的,例 "Pocket Habits Pro"
    Description:     用户看到的,≤45 char

    每个 IAP 都要上传一张审核截图(订阅卖点页),否则该 IAP 一直停在 “Missing Metadata”,不会和 build 一起送审。然后在 Xcode 里:

    // StoreKit 2 用法
    let products = try await Product.products(for: ["com.yoursite.app.pro_monthly"])
  8. TestFlight 真用户测试。App Store Connect → TestFlight → Internal / External Testing:

    Internal:   只能加 100 个 App Store Connect 团队成员,无需 Beta App Review,build 处理完就能立刻测
    External:   最多 10,000 邀请用户,每个版本的第一个 build 需要 Beta App Review,后续 build 通常不用
    
    操作:
    1. Xcode → Product → Archive → Distribute App → App Store Connect → Upload
    2. 等 build 处理完(10-30 分钟)
    3. TestFlight → 选这个 build → Add External Testers → 邀请邮件
    4. 拿到至少 5 个真实用户反馈 + 0 crash 才能进下一步

    修完明显问题再考虑提审。

  9. 提审前最后一遍清单

    - [ ] App 图标在 1024x1024 / 60x60 都清晰可辨
    - [ ] 启动屏(Launch Screen)不是空白也不是占位
    - [ ] grep 没有残留的 print() / NSLog / TODO / 开发用 debug 菜单
    - [ ] grep 没有 "test@example.com" / "lorem ipsum"
    - [ ] About 页 / Settings 页 / Help 页所有链接 curl 通
    - [ ] 删 App → 重装 → 走完冷启动全流程无 crash
    - [ ] 审核账号已在 App Review Information 填好,且账号已登录测试设备验证可用
    - [ ] App Store Connect 里所有红色 "Required" 标都已变绿
    # 一键过 grep 检查
    grep -rE "TODO|print\\(|NSLog|test@example|lorem" --include="*.swift" --include="*.m" --include="*.mm" .

容易踩的坑

  • 隐私政策挂在个人邮箱或免费二级域名。Apple 要稳定的,用自己域名。
  • 觉得”我不收集数据”就跳过 App Privacy。用了 Firebase Analytics、Sentry 之类都算收集。
  • IAP 没在 TestFlight 沙盒测就提交。IAP bug 一定会被审核抓到,浪费一整轮。
  • 截图展示了你 App 根本没有的功能。这是 2.3.3 条款常见拒审。
  • 虚构评论、虚构用户数、写”曾被某媒体报道”但无法证实。
  • App 名包含别人的商标。Apple 法务环节会抓。

这篇适合谁

第一次上 iOS 的独立开发者,想压缩准备工作、避免低级拒审。

这篇不适合谁

已经有成熟发布流程的大团队——这些基本都做过了,看拒审原因那篇更有用。

FAQ

  • 第一次提审一般多久: 截至 2026 年 6 月,Apple 约 90% 的提交在 24 小时内审完,剩下的多数也在 1 到 2 天内出结果。慢的不是 Apple,是某个字段填错时第一天就被打回 Metadata Rejected、重新计时。第一次上线建议预留一周 buffer。
  • 现在真的只要传两种截图尺寸吗: 大多数 App 是的。自动缩放规则改了之后,你只传 iPhone 6.9 英寸,跑在 iPad 上再加 iPad 13 英寸,App Store Connect 会自动缩到更小的机型。只有缩放后布局出问题,才需要补传更小的尺寸。
  • 要 LLC 才能发布吗: 不用。个人 Apple Developer 账号就能发布,同样是 $99/年。开 LLC 是为责任或品牌,不是要求。
  • 用品牌名但没注册商标可以吗: 可以,但有商标冲突时 Apple 可能要你证明所有权。定名前先在 USPTO 数据库搜一下。
  • App 主要是网页套壳怎么办: 认真读 4.2 条。没原生价值的纯套壳会被拒。加点真原生功能(推送、离线、分享 extension),否则准备吃 4.2 拒审。
  • 能用 AI 写上架文案和审核回复吗: 初稿可以。ChatGPT(GPT-5.5)或 Claude(Sonnet 4.6)很擅长 App Store 关键词字段和精简描述,但字数限制一定要自己核,也绝不能让它编造假评论或假功能。见 用 AI 写能转化的 App Store 上架文案

相关阅读

标签: #独立开发 #App Store #App 上线 #入门