ios-app-store-submission

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

iOS App Store Submission

iOS应用提交至App Store

You are an expert in iOS app submission, Apple review guidelines, and build automation. Your goal is to guide users through the entire submission process efficiently, avoiding common pitfalls and rejections.
你是iOS应用提交、Apple审核指南和构建自动化方面的专家。你的目标是高效引导用户完成整个提交流程,避免常见的陷阱和被拒情况。

Core Philosophy

核心理念

App Store submission is not just about uploading a binary. It's about:
  • Meeting Apple's technical and content requirements
  • Providing accurate metadata and privacy disclosures
  • Preparing for potential review questions
  • Automating the process for fast iteration

App Store提交不仅仅是上传二进制文件。它还包括:
  • 满足Apple的技术和内容要求
  • 提供准确的元数据和隐私披露
  • 为潜在的审核问题做好准备
  • 自动化流程以实现快速迭代

Quick Reference: Build Methods

快速参考:构建方法

方法所要時間いつ使う
CLI Local (推奨)10-15分最速。ローカルでArchive→直接アップロード
Xcode GUI10-15分CLIに慣れていない場合
EAS Build15-30分+キューCI/CD、チーム開発、Free tierはキュー待ちあり

方法所需时间适用场景
CLI本地构建(推荐)10-15分钟速度最快。本地归档→直接上传
Xcode GUI10-15分钟不熟悉CLI的用户
EAS Build15-30分钟+排队等待CI/CD、团队开发场景,免费版需排队

⚠️ Known Issues Prevention (ビルド前に必ず確認)

⚠️ 已知问题预防(构建前务必检查)

過去のリジェクト事例から学んだ、ビルド前に必ず確認すべき項目
从过往应用被拒案例中总结的构建前务必检查的事项

1. Provider で
null
を返さない

1. 避免Provider返回
null

問題: ThemeProvider等がAsyncStorage読み込み中に
null
を返すと、審査時に「黒い画面」でリジェクト。
確認方法:
bash
grep -r "return null" src/providers/
対処: ローディングUIを返す
typescript
// NG
if (!isLoaded) return null;

// OK
if (!isLoaded) {
  return (
    <View style={{ flex: 1, backgroundColor: '#1a1a2e', justifyContent: 'center', alignItems: 'center' }}>
      <ActivityIndicator size="large" color="#059669" />
    </View>
  );
}
问题: 若ThemeProvider等在读取AsyncStorage时返回
null
,审核时会因“黑屏”被拒。
检查方法:
bash
grep -r "return null" src/providers/
解决方法: 返回加载UI
typescript
// 错误示例
if (!isLoaded) return null;

// 正确示例
if (!isLoaded) {
  return (
    <View style={{ flex: 1, backgroundColor: '#1a1a2e', justifyContent: 'center', alignItems: 'center' }}>
      <ActivityIndicator size="large" color="#059669" />
    </View>
  );
}

2. ATT プラグイン設定

2. ATT插件设置

問題:
expo-tracking-transparency
をベア文字列で設定すると、ATTダイアログが表示されない。
確認方法:
bash
undefined
问题: 若以纯字符串形式配置
expo-tracking-transparency
,ATT对话框将无法显示。
检查方法:
bash
undefined

app.json確認

检查app.json

grep -A5 "expo-tracking-transparency" app.json
grep -A5 "expo-tracking-transparency" app.json

prebuild後のInfo.plist確認

预构建后检查Info.plist

npx expo prebuild --clean grep -A1 "NSUserTrackingUsageDescription" ios/*/Info.plist

**正しい設定**:
```json
[
  "expo-tracking-transparency",
  {
    "userTrackingPermission": "This identifier will be used to deliver personalized ads to you."
  }
]
npx expo prebuild --clean grep -A1 "NSUserTrackingUsageDescription" ios/*/Info.plist

**正确配置**:
```json
[
  "expo-tracking-transparency",
  {
    "userTrackingPermission": "此标识符将用于为你提供个性化广告。"
  }
]

3. UIRequiredDeviceCapabilities に telephony を入れない

3. 不要在UIRequiredDeviceCapabilities中添加telephony

問題:
telephony
を設定すると、Mac Apple silicon / Vision Pro で警告が出る。
確認方法:
bash
grep -r "telephony" app.json
grep -r "UIRequiredDeviceCapabilities" ios/*/Info.plist
対処: iPhoneのみ対応は
supportsTablet: false
で十分。
telephony
は不要。
问题: 若设置
telephony
,Mac Apple silicon / Vision Pro设备会出现警告。
检查方法:
bash
grep -r "telephony" app.json
grep -r "UIRequiredDeviceCapabilities" ios/*/Info.plist
解决方法: 若仅支持iPhone,设置
supportsTablet: false
即可,无需添加
telephony

4. ビルド前検証コマンド

4. 构建前验证命令

bash
undefined
bash
undefined

全チェックを一括実行

批量执行所有检查

echo "=== Provider null check ===" && grep -r "return null" src/providers/ 2>/dev/null || echo "OK" echo "=== ATT config check ===" && grep -A5 "expo-tracking-transparency" app.json echo "=== telephony check ===" && grep -r "telephony" app.json 2>/dev/null || echo "OK"

---
echo "=== Provider null值检查 ===" && grep -r "return null" src/providers/ 2>/dev/null || echo "正常" echo "=== ATT配置检查 ===" && grep -A5 "expo-tracking-transparency" app.json echo "=== telephony检查 ===" && grep -r "telephony" app.json 2>/dev/null || echo "正常"

---

Phase 1: Initial Setup (One-time)

阶段1:初始设置(一次性操作)

1.1 App-specific Password

1.1 应用专用密码

CLIでアップロードするために必要。一度作成すれば全アプリで使い回し可能
  1. https://appleid.apple.com にアクセス
  2. サインイン → サインインとセキュリティアプリ用パスワード
  3. + → ラベル入力(例:
    mued-apps
    )→ 作成
  4. パスワードをコピー(
    xxxx-xxxx-xxxx-xxxx
    形式)
  5. .env.local
    に保存:
bash
undefined
使用CLI上传应用时必需。创建一次即可在所有应用中复用
  1. 访问 https://appleid.apple.com
  2. 登录 → 登录与安全应用专用密码
  3. 点击**+** → 输入标签(例如:
    mued-apps
    )→ 创建
  4. 复制密码(格式为
    xxxx-xxxx-xxxx-xxxx
  5. 保存至
    .env.local
    :
bash
undefined

Apple ID app-specific password

Apple ID应用专用密码

APPLE_ID=your-apple-id@example.com APP_PASSWORD=xxxx-xxxx-xxxx-xxxx TEAM_ID=XXXXXXXXXX
undefined
APPLE_ID=your-apple-id@example.com APP_PASSWORD=xxxx-xxxx-xxxx-xxxx TEAM_ID=XXXXXXXXXX
undefined

1.2 ExportOptions.plist

1.2 ExportOptions.plist

プロジェクトルートに作成:
xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>method</key>
    <string>app-store-connect</string>
    <key>teamID</key>
    <string>YOUR_TEAM_ID</string>
    <key>uploadSymbols</key>
    <true/>
    <key>destination</key>
    <string>upload</string>
</dict>
</plist>

在项目根目录创建:
xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>method</key>
    <string>app-store-connect</string>
    <key>teamID</key>
    <string>YOUR_TEAM_ID</string>
    <key>uploadSymbols</key>
    <true/>
    <key>destination</key>
    <string>upload</string>
</dict>
</plist>

Phase 2: CLI Build & Upload (推奨)

阶段2:CLI构建与上传(推荐)

2.1 Full CLI Workflow

2.1 完整CLI工作流

bash
undefined
bash
undefined

1. Prebuild(ネイティブプロジェクト生成)

1. 预构建(生成原生项目)

npx expo prebuild --clean
npx expo prebuild --clean

2. Archive

2. 归档

xcodebuild -workspace ios/YourApp.xcworkspace
-scheme YourApp
-configuration Release
-archivePath build/YourApp.xcarchive
-destination "generic/platform=iOS"
DEVELOPMENT_TEAM=YOUR_TEAM_ID
CODE_SIGN_STYLE=Automatic
-allowProvisioningUpdates
archive
xcodebuild -workspace ios/YourApp.xcworkspace
-scheme YourApp
-configuration Release
-archivePath build/YourApp.xcarchive
-destination "generic/platform=iOS"
DEVELOPMENT_TEAM=YOUR_TEAM_ID
CODE_SIGN_STYLE=Automatic
-allowProvisioningUpdates
archive

3. Export & Upload(一発でApp Store Connectへ)

3. 导出并上传(一键上传至App Store Connect)

xcodebuild -exportArchive
-archivePath build/YourApp.xcarchive
-exportPath build
-exportOptionsPlist ExportOptions.plist
-allowProvisioningUpdates
undefined
xcodebuild -exportArchive
-archivePath build/YourApp.xcarchive
-exportPath build
-exportOptionsPlist ExportOptions.plist
-allowProvisioningUpdates
undefined

2.2 よくあるエラーと対処

2.2 常见错误与解决方法

エラー原因対処
No profiles found
プロビジョニング未設定
-allowProvisioningUpdates
を追加
Signing requires development team
チームID未指定
DEVELOPMENT_TEAM=XXXX
を追加
No provider associated
Apple ID未認証Xcode → Preferences → Accounts で認証
错误原因解决方法
No profiles found
未配置描述文件添加
-allowProvisioningUpdates
参数
Signing requires development team
未指定团队ID添加
DEVELOPMENT_TEAM=XXXX
参数
No provider associated
Apple ID未认证在Xcode → 偏好设置 → 账户中完成认证

2.3 Upload後の確認

2.3 上传后的检查

  1. App Store Connect を開く
  2. My Apps → Your App → TestFlight
  3. ビルドが「処理中」→「利用可能」になるまで5-15分待つ
  4. App Store タブ → ビルドを選択 → 審査に提出

  1. 打开App Store Connect
  2. 我的应用 → 你的应用 → TestFlight
  3. 等待构建从“处理中”变为“可用”(需5-15分钟)
  4. 进入App Store标签 → 选择构建 → 提交审核

Phase 3: Xcode GUI Build (Alternative)

阶段3:Xcode GUI构建(替代方案)

CLIが苦手な場合の代替手順。
bash
undefined
适用于不熟悉CLI的用户。
bash
undefined

1. Prebuild

1. 预构建

npx expo prebuild --clean
npx expo prebuild --clean

2. Xcodeで開く

2. 用Xcode打开

open ios/YourApp.xcworkspace
undefined
open ios/YourApp.xcworkspace
undefined

Xcode内の操作

Xcode内操作步骤

  1. Signing: Automatically manage signing → Team選択
  2. Device: "Any iOS Device (arm64)" を選択
  3. Product → Archive
  4. Archiveウィンドウ → Distribute App
  5. App Store ConnectUpload

  1. 签名设置: 勾选自动管理签名 → 选择团队
  2. 设备: 选择“Any iOS Device (arm64)”
  3. 产品 → 归档
  4. 归档窗口 → 分发应用
  5. 选择App Store Connect上传

Phase 4: EAS Build (Cloud)

阶段4:EAS Build(云端构建)

チーム開発やCI/CDで使用。Free tierはキュー待ちあり(数十分〜数時間)。
bash
undefined
适用于团队开发或CI/CD场景。免费版需排队等待(数十分钟至数小时)。
bash
undefined

Build

构建

eas build --platform ios --profile production
eas build --platform ios --profile production

Submit

提交

eas submit --platform ios --latest
undefined
eas submit --platform ios --latest
undefined

eas.json 設定

eas.json配置

json
{
  "cli": {
    "version": ">= 16.0.0",
    "appVersionSource": "remote"
  },
  "build": {
    "production": {
      "ios": {
        "autoIncrement": "buildNumber"
      }
    }
  },
  "submit": {
    "production": {
      "ios": {
        "appleId": "your-apple-id@example.com",
        "ascAppId": "1234567890",
        "appleTeamId": "XXXXXXXXXX"
      }
    }
  }
}

json
{
  "cli": {
    "version": ">= 16.0.0",
    "appVersionSource": "remote"
  },
  "build": {
    "production": {
      "ios": {
        "autoIncrement": "buildNumber"
      }
    }
  },
  "submit": {
    "production": {
      "ios": {
        "appleId": "your-apple-id@example.com",
        "ascAppId": "1234567890",
        "appleTeamId": "XXXXXXXXXX"
      }
    }
  }
}

Phase 5: App Store Connect Setup

阶段5:App Store Connect设置

5.1 App Information

5.1 应用信息

FieldRequirements
Name30 chars max, unique on App Store
Subtitle30 chars max, optional
CategoryPrimary + optional secondary
Age RatingComplete questionnaire
字段要求
应用名称最多30字符,在App Store中唯一
副标题最多30字符,可选
分类主分类 + 可选副分类
年龄分级完成问卷调查

5.2 App Privacy (Critical!)

5.2 应用隐私(至关重要!)

App Store Connect → App Privacy → Get Started
AdMob使用時の宣言:
Data TypeCollectedLinkedTracking
Device IDYesYesYes (if ATT granted)
Product InteractionYesNoNo
Advertising DataYesYesYes
Crash DataYesNoNo
进入App Store Connect → 应用隐私 → 开始设置
使用AdMob时的声明:
数据类型是否收集是否关联是否追踪
设备ID是(若用户同意ATT)
产品交互数据
广告数据
崩溃数据

5.3 Screenshots

5.3 截图

DeviceSize (pixels)Required
6.7" iPhone1290 x 2796Yes
6.5" iPhone1284 x 2778Yes
12.9" iPad Pro2048 x 2732If supports iPad

设备尺寸(像素)是否必需
6.7英寸iPhone1290 x 2796
6.5英寸iPhone1284 x 2778
12.9英寸iPad Pro2048 x 2732若支持iPad则必需

Phase 6: Privacy Requirements

阶段6:隐私要求

6.1 App Tracking Transparency (ATT)

6.1 应用追踪透明度(ATT)

AdMob等の広告SDKを使う場合は必須。
app.json設定(プラグイン経由が推奨):
json
{
  "plugins": [
    [
      "expo-tracking-transparency",
      {
        "userTrackingPermission": "This identifier will be used to deliver personalized ads to you."
      }
    ]
  ]
}
⚠️ 注意:
infoPlist
に直接書くのではなく、プラグイン設定を使う。prebuild時にInfo.plistに正しく反映される。
コード実装:
typescript
import { requestTrackingPermissionsAsync } from 'expo-tracking-transparency';

async function requestTracking() {
  const { status } = await requestTrackingPermissionsAsync();
  // 'granted' | 'denied' | 'undetermined'
}
使用AdMob等广告SDK时必需配置。
app.json配置(推荐通过插件设置):
json
{
  "plugins": [
    [
      "expo-tracking-transparency",
      {
        "userTrackingPermission": "此标识符将用于为你提供个性化广告。"
      }
    ]
  ]
}
⚠️ 注意: 请勿直接在
infoPlist
中编写,应使用插件配置。预构建时会自动正确同步至Info.plist。
代码实现:
typescript
import { requestTrackingPermissionsAsync } from 'expo-tracking-transparency';

async function requestTracking() {
  const { status } = await requestTrackingPermissionsAsync();
  // 返回值为 'granted' | 'denied' | 'undetermined'
}

6.2 ATT設定の検証

6.2 ATT配置验证

bash
npx expo prebuild --clean
grep -A1 "NSUserTrackingUsageDescription" ios/YourApp/Info.plist

bash
npx expo prebuild --clean
grep -A1 "NSUserTrackingUsageDescription" ios/YourApp/Info.plist

Phase 7: App Review

阶段7:应用审核

7.1 Review Timeline

7.1 审核时间线

TypeTypical Duration
New App24-48 hours
Update24 hours
Expedited Review24 hours (request required)
类型典型时长
新应用24-48小时
应用更新24小时
加急审核24小时(需申请)

7.2 Common Rejection Reasons & Fixes

7.2 常见被拒原因与修复方案

1. Guideline 2.1 - App Completeness

1. 指南2.1 - 应用完整性

"Your app crashed during review" / "Black screen on launch"
原因:
  • Provider(ThemeProvider等)がローディング中に
    null
    を返している
  • AsyncStorage読み込み中に画面が真っ黒
Fix:
typescript
// Before (NG)
if (!isLoaded) {
  return null;
}

// After (OK)
if (!isLoaded) {
  return (
    <View style={{ flex: 1, backgroundColor: '#1a1a2e', justifyContent: 'center', alignItems: 'center' }}>
      <ActivityIndicator size="large" color="#059669" />
    </View>
  );
}
"你的应用在审核期间崩溃" / "启动时黑屏"
原因:
  • Provider(如ThemeProvider)在加载时返回
    null
  • 读取AsyncStorage期间屏幕黑屏
修复:
typescript
// 之前的错误写法
if (!isLoaded) {
  return null;
}

// 修复后的正确写法
if (!isLoaded) {
  return (
    <View style={{ flex: 1, backgroundColor: '#1a1a2e', justifyContent: 'center', alignItems: 'center' }}>
      <ActivityIndicator size="large" color="#059669" />
    </View>
  );
}

2. Guideline 5.1.2 - ATT Not Shown

2. 指南5.1.2 - ATT未显示

"App doesn't show ATT dialog"
原因:
  • expo-tracking-transparency
    がベア文字列でプラグイン設定されている
  • NSUserTrackingUsageDescription
    がInfo.plistに含まれていない
Fix:
json
// Before (NG)
"plugins": ["expo-tracking-transparency"]

// After (OK)
"plugins": [
  [
    "expo-tracking-transparency",
    {
      "userTrackingPermission": "This identifier will be used to deliver personalized ads to you."
    }
  ]
]
"应用未显示ATT对话框"
原因:
  • expo-tracking-transparency
    以纯字符串形式配置,导致
    NSUserTrackingUsageDescription
    未添加到Info.plist
修复:
json
// 之前的错误配置
"plugins": ["expo-tracking-transparency"]

// 修复后的正确配置
"plugins": [
  [
    "expo-tracking-transparency",
    {
      "userTrackingPermission": "此标识符将用于为你提供个性化广告。"
    }
  ]
]

3. Guideline 2.3 - Accurate Metadata

3. 指南2.3 - 元数据不准确

"Screenshots don't match app functionality"
Fix:
  • スクリーンショットを最新版に更新
  • 存在しない機能を表示しない
"截图与应用功能不符"
修复:
  • 更新截图至最新版本
  • 不要展示应用中不存在的功能

7.3 Responding to Rejection

7.3 回复被拒通知

  1. Resolution Centerで返信 (App Store Connect → Your App → Resolution Center)
  2. 修正内容を具体的に説明
  3. 再ビルド→再アップロード→再提出
  1. 在解决中心回复(App Store Connect → 你的应用 → 解决中心)
  2. 具体说明修复内容
  3. 重新构建→重新上传→重新提交

7.4 Resolution Center コメントテンプレート

7.4 解决中心回复模板

審査員に修正内容を伝えるコメント。英語で、具体的に書く。
向审核员说明修复内容的回复模板。请用英文书写,内容需具体

Black Screen / Crash 修正時

黑屏/崩溃修复时

We have addressed the issue identified in the previous review:

**[Issue description] (fixed)**
- Root cause: [Technical explanation of what was wrong]
- Fix: [What was changed]
- File changed: [File path]

Build [N] contains this fix. Thank you for your review.
我们已修复上一次审核中发现的问题:

**[问题描述](已修复)**
- 根本原因:[技术层面说明问题所在]
- 修复方案:[说明具体修改内容]
- 修改文件:[文件路径]

版本号[N]的构建已包含此修复。感谢你的审核。

ATT Not Shown 修正時

ATT未显示修复时

We have addressed the ATT (App Tracking Transparency) issue:

**ATT dialog not shown (fixed)**
- Root cause: `expo-tracking-transparency` was configured as a bare string, causing `NSUserTrackingUsageDescription` to not be included in Info.plist
- Fix: Changed plugin configuration to include `userTrackingPermission` parameter
- Verified: Confirmed the description is now present in Info.plist via prebuild

Build [N] contains this fix. Thank you for your review.
我们已修复ATT(应用追踪透明度)相关问题:

**ATT对话框未显示(已修复)**
- 根本原因:`expo-tracking-transparency`以纯字符串形式配置,导致`NSUserTrackingUsageDescription`未添加到Info.plist
- 修复方案:修改插件配置,添加`userTrackingPermission`参数
- 验证:通过预构建确认描述已正确添加到Info.plist

版本号[N]的构建已包含此修复。感谢你的审核。

UIRequiredDeviceCapabilities 警告修正時

UIRequiredDeviceCapabilities警告修复时

We have addressed the compatibility warning:

**Mac/Vision Pro compatibility (fixed)**
- Removed `UIRequiredDeviceCapabilities: ["telephony"]` from Info.plist
- The app targets iPhone only via `supportsTablet: false` setting

Build [N] contains this fix. Thank you for your review.
ポイント:
  • 何が問題だったか(Root cause)
  • 何を変更したか(Fix)
  • どのビルドに含まれているか(Build N)
  • 簡潔に、技術的に正確に
我们已修复兼容性警告:

**Mac/Vision Pro兼容性问题(已修复)**
- 从Info.plist中移除`UIRequiredDeviceCapabilities: ["telephony"]`
- 通过设置`supportsTablet: false`确保应用仅支持iPhone

版本号[N]的构建已包含此修复。感谢你的审核。
要点:
  • 明确说明问题根源(Root cause)
  • 说明具体修改内容(Fix)
  • 指明包含修复的构建版本(Build N)
  • 简洁、技术准确

7.5 Requesting Expedited Review

7.5 申请加急审核

緊急時のみ:
  1. App Store Connect → Your App → App Review
  2. Contact Us → Request Expedited Review
  3. 理由を明確に説明

仅适用于紧急情况:
  1. 进入App Store Connect → 你的应用 → 应用审核
  2. 联系我们 → 申请加急审核
  3. 明确说明理由

Checklist: Pre-Submission

提交前检查清单

Technical

技术层面

  • ExportOptions.plist
    作成済み
  • app.json
    bundleIdentifier
    ,
    version
    設定済み
  • ATTプラグイン設定済み(広告使用時)
  • ローディング状態でUIを表示(
    null
    を返さない)
  • 実機でテスト済み
  • 已创建
    ExportOptions.plist
  • 已在
    app.json
    中设置
    bundleIdentifier
    version
  • 已配置ATT插件(若使用广告)
  • 加载状态下显示UI(不返回
    null
  • 已在真机上完成测试

App Store Connect

App Store Connect层面

  • App Privacy 設定済み
  • Screenshots アップロード済み
  • Description, Keywords 設定済み
  • Support URL 設定済み

  • 已设置应用隐私
  • 已上传截图
  • 已设置描述、关键词
  • 已设置支持URL

Quick Commands Reference

常用命令参考

bash
undefined
bash
undefined

=== CLI Build (推奨) ===

=== CLI构建(推荐) ===

npx expo prebuild --clean xcodebuild -workspace ios/App.xcworkspace -scheme App -configuration Release
-archivePath build/App.xcarchive -destination "generic/platform=iOS"
DEVELOPMENT_TEAM=XXXX CODE_SIGN_STYLE=Automatic -allowProvisioningUpdates archive xcodebuild -exportArchive -archivePath build/App.xcarchive -exportPath build
-exportOptionsPlist ExportOptions.plist -allowProvisioningUpdates
npx expo prebuild --clean xcodebuild -workspace ios/App.xcworkspace -scheme App -configuration Release
-archivePath build/App.xcarchive -destination "generic/platform=iOS"
DEVELOPMENT_TEAM=XXXX CODE_SIGN_STYLE=Automatic -allowProvisioningUpdates archive xcodebuild -exportArchive -archivePath build/App.xcarchive -exportPath build
-exportOptionsPlist ExportOptions.plist -allowProvisioningUpdates

=== EAS Build ===

=== EAS构建 ===

eas build --platform ios --profile production eas submit --platform ios --latest
eas build --platform ios --profile production eas submit --platform ios --latest

=== Debugging ===

=== 调试 ===

grep -A1 "NSUserTrackingUsageDescription" ios/App/Info.plist # ATT確認 eas build:view BUILD_ID --json # ビルドステータス確認

---
grep -A1 "NSUserTrackingUsageDescription" ios/App/Info.plist # 检查ATT配置 eas build:view BUILD_ID --json # 检查构建状态

---

Related Skills

相关技能

  • android-play-store-submission: Google Play Store submission
  • launch-strategy: App launch planning
  • marketing-psychology: App Store optimization (ASO)
  • android-play-store-submission: Google Play Store应用提交
  • launch-strategy: 应用发布规划
  • marketing-psychology: App Store优化(ASO)