axiom-app-store-connect-ref
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseApp Store Connect Reference
App Store Connect 参考文档
Overview
概述
App Store Connect (ASC) provides crash reports, TestFlight feedback, and performance metrics for your apps. This reference covers how to navigate ASC to find and export crash data for analysis.
When to use ASC vs Xcode Organizer:
| Task | Best Tool |
|---|---|
| Quick crash triage during development | Xcode Organizer |
| Team-wide crash visibility | App Store Connect |
| TestFlight feedback with screenshots | App Store Connect |
| Historical metrics and trends | App Store Connect |
| Downloading crash logs for analysis | Either (ASC has better export) |
| Symbolication | Xcode Organizer |
App Store Connect (ASC) 为你的应用提供崩溃报告、TestFlight反馈和性能指标。本参考文档介绍了如何在ASC中导航以查找和导出崩溃数据进行分析。
何时使用ASC vs Xcode Organizer:
| 任务 | 最佳工具 |
|---|---|
| 开发期间快速崩溃分类 | Xcode Organizer |
| 团队范围内的崩溃可见性 | App Store Connect |
| 带截图的TestFlight反馈 | App Store Connect |
| 历史指标与趋势 | App Store Connect |
| 下载崩溃日志进行分析 | 两者均可(ASC的导出功能更优) |
| 符号化 | Xcode Organizer |
Navigating to Crash Data
导航至崩溃数据
Path to Crashes
崩溃数据路径
App Store Connect
└── My Apps
└── [Your App]
└── Analytics
└── CrashesDirect URL pattern:
https://appstoreconnect.apple.com/analytics/app/[APP_ID]/crashesApp Store Connect
└── 我的应用
└── [你的应用]
└── 分析
└── 崩溃直接URL格式:
https://appstoreconnect.apple.com/analytics/app/[APP_ID]/crashesCrashes Dashboard Layout
崩溃仪表盘布局
┌─────────────────────────────────────────────────────────────────────────┐
│ [Filters: Platform ▼] [Version ▼] [Date Range ▼] [Compare ▼] │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ Crash-Free Users Graph │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ 99.5% ───────────────────────────────────────────────────── │ │
│ │ 99.0% ───────────────────────────────────────────────────── │ │
│ │ 98.5% ───────────────────────────────────────────────────── │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
│ Crash Count by Version │
│ ┌───────────────────────────────────────────────────────────────────┐ │
│ │ v2.1.0 ████████████ 1,234 crashes │ │
│ │ v2.0.5 ████████ 892 crashes │ │
│ │ v2.0.4 ███ 156 crashes │ │
│ └───────────────────────────────────────────────────────────────────┘ │
│ │
├─────────────────────────────────────────────────────────────────────────┤
│ Top Crash Signatures │
│ ┌───────────────────────────────────────────────────────────────────┐ │
│ │ 1. EXC_BAD_ACCESS in UserManager.currentUser.getter 45% share │ │
│ │ 2. EXC_CRASH in NetworkService.fetchData() 23% share │ │
│ │ 3. EXC_BREAKPOINT in Array subscript 12% share │ │
│ └───────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘┌─────────────────────────────────────────────────────────────────────────┐
│ [筛选器:平台 ▼] [版本 ▼] [日期范围 ▼] [对比 ▼] │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ 无崩溃用户占比图表 │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ 99.5% ───────────────────────────────────────────────────── │ │
│ │ 99.0% ───────────────────────────────────────────────────── │ │
│ │ 98.5% ───────────────────────────────────────────────────── │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
│ 各版本崩溃次数 │
│ ┌───────────────────────────────────────────────────────────────────┐ │
│ │ v2.1.0 ████████████ 1,234次崩溃 │ │
│ │ v2.0.5 ████████ 892次崩溃 │ │
│ │ v2.0.4 ███ 156次崩溃 │ │
│ └───────────────────────────────────────────────────────────────────┘ │
│ │
├─────────────────────────────────────────────────────────────────────────┤
│ top崩溃签名 │
│ ┌───────────────────────────────────────────────────────────────────┐ │
│ │ 1. EXC_BAD_ACCESS in UserManager.currentUser.getter 占比45% │ │
│ │ 2. EXC_CRASH in NetworkService.fetchData() 占比23% │ │
│ │ 3. EXC_BREAKPOINT in Array subscript 占比12% │ │
│ └───────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘Key Metrics Explained
关键指标说明
| Metric | What It Means |
|---|---|
| Crash-Free Users | Percentage of daily active users who didn't experience a crash |
| Crash Count | Total number of crash reports received |
| Crash Rate | Crashes per 1,000 sessions |
| Affected Devices | Number of unique devices that crashed |
| Crash Signature | Grouped crashes with same stack trace |
| 指标 | 含义 |
|---|---|
| 无崩溃用户占比 | 未遭遇崩溃的日活跃用户百分比 |
| 崩溃次数 | 收到的崩溃报告总数 |
| 崩溃率 | 每1000次会话的崩溃次数 |
| 受影响设备数 | 发生崩溃的唯一设备数量 |
| 崩溃签名 | 具有相同堆栈跟踪的分组崩溃 |
Filtering Options
筛选选项
| Filter | Use Case |
|---|---|
| Platform | iOS, iPadOS, macOS, watchOS, tvOS |
| Version | Drill into specific app versions |
| Date Range | Last 7/30/90 days or custom range |
| Compare | Compare crash rates between versions |
| Device | Filter by iPhone model, iPad, etc. |
| OS Version | Find OS-specific crashes |
| 筛选器 | 使用场景 |
|---|---|
| 平台 | iOS、iPadOS、macOS、watchOS、tvOS |
| 版本 | 深入查看特定应用版本 |
| 日期范围 | 最近7/30/90天或自定义范围 |
| 对比 | 对比不同版本的崩溃率 |
| 设备 | 按iPhone型号、iPad等筛选 |
| 系统版本 | 查找特定系统版本的崩溃 |
Viewing Individual Crash Reports
查看单个崩溃报告
Crash Signature Detail View
崩溃签名详情页
Click a crash signature to see:
┌─────────────────────────────────────────────────────────────────────────┐
│ EXC_BAD_ACCESS in UserManager.currentUser.getter │
├─────────────────────────────────────────────────────────────────────────┤
│ Affected: 234 devices • 45% of crashes • First seen: Jan 10 │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ Exception Information │
│ ─────────────────── │
│ Type: EXC_BAD_ACCESS (SIGSEGV) │
│ Codes: KERN_INVALID_ADDRESS at 0x0000000000000010 │
│ │
│ Crashed Thread (0) │
│ ───────────────── │
│ 0 MyApp UserManager.currentUser.getter + 45 │
│ 1 MyApp ProfileViewController.viewDidLoad() + 123 │
│ 2 UIKitCore -[UIViewController loadView] + 89 │
│ 3 UIKitCore -[UIViewController view] + 27 │
│ │
├─────────────────────────────────────────────────────────────────────────┤
│ Distribution │
│ ─────────────── │
│ iOS 17.2: ████████ 65% │
│ iOS 17.1: ████ 25% │
│ iOS 16.4: ██ 10% │
│ │
│ iPhone 15 Pro: ████████ 45% │
│ iPhone 14: ████ 30% │
│ iPhone 13: ██ 15% │
│ Other: █ 10% │
└─────────────────────────────────────────────────────────────────────────┘点击崩溃签名可查看:
┌─────────────────────────────────────────────────────────────────────────┐
│ EXC_BAD_ACCESS in UserManager.currentUser.getter │
├─────────────────────────────────────────────────────────────────────────┤
│ 受影响设备:234台 • 占崩溃总数的45% • 首次出现时间:1月10日 │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ 异常信息 │
│ ─────────────────── │
│ 类型:EXC_BAD_ACCESS (SIGSEGV) │
│ 代码:KERN_INVALID_ADDRESS at 0x0000000000000010 │
│ │
│ 崩溃线程 (0) │
│ ───────────────── │
│ 0 MyApp UserManager.currentUser.getter + 45 │
│ 1 MyApp ProfileViewController.viewDidLoad() + 123 │
│ 2 UIKitCore -[UIViewController loadView] + 89 │
│ 3 UIKitCore -[UIViewController view] + 27 │
│ │
├─────────────────────────────────────────────────────────────────────────┤
│ 分布情况 │
│ ─────────────── │
│ iOS 17.2: ████████ 65% │
│ iOS 17.1: ████ 25% │
│ iOS 16.4: ██ 10% │
│ │
│ iPhone 15 Pro: ████████ 45% │
│ iPhone 14: ████ 30% │
│ iPhone 13: ██ 15% │
│ 其他: █ 10% │
└─────────────────────────────────────────────────────────────────────────┘Downloading Crash Logs
下载崩溃日志
- Click on a crash signature
- Look for Download Logs button (top right)
- Select format:
- .ips (JSON format, iOS 15+)
- .crash (text format, legacy)
- Use agent to parse:
crash-analyzer/axiom:analyze-crash
- 点击某个崩溃签名
- 查找右上角的下载日志按钮
- 选择格式:
- .ips(JSON格式,iOS 15+)
- .crash(文本格式,旧版)
- 使用agent解析:
crash-analyzer/axiom:analyze-crash
TestFlight Feedback
TestFlight反馈
Path to Feedback
反馈路径
App Store Connect
└── My Apps
└── [Your App]
└── TestFlight
└── FeedbackApp Store Connect
└── 我的应用
└── [你的应用]
└── TestFlight
└── 反馈Feedback Entry Contents
反馈条目内容
Each feedback submission includes:
| Field | Description |
|---|---|
| Screenshot | What the tester saw (often most valuable) |
| Comment | Tester's description of the issue |
| App Version | Exact TestFlight build number |
| Device Model | iPhone 15 Pro Max, iPad Air, etc. |
| OS Version | iOS 17.2.1, etc. |
| Battery Level | Low battery can affect behavior |
| Available Disk | Low disk can cause write failures |
| Network Type | WiFi vs Cellular |
| Locale | Language and region settings |
| Timestamp | When submitted |
每条反馈包含:
| 字段 | 描述 |
|---|---|
| 截图 | 测试者看到的界面(通常最有价值) |
| 评论 | 测试者对问题的描述 |
| 应用版本 | 精确的TestFlight构建版本号 |
| 设备型号 | iPhone 15 Pro Max、iPad Air等 |
| 系统版本 | iOS 17.2.1等 |
| 电池电量 | 低电量可能影响应用行为 |
| 可用磁盘空间 | 磁盘空间不足可能导致写入失败 |
| 网络类型 | WiFi vs 蜂窝网络 |
| 区域设置 | 语言和地区设置 |
| 时间戳 | 提交时间 |
Feedback Filtering
反馈筛选
| Filter | Use Case |
|---|---|
| Build | Focus on specific TestFlight builds |
| Date | Recent feedback first |
| Has Screenshot | Find visual issues quickly |
| 筛选器 | 使用场景 |
|---|---|
| 构建版本 | 聚焦特定TestFlight构建版本 |
| 日期 | 优先查看近期反馈 |
| 包含截图 | 快速找到视觉类问题 |
Limitation: No Reply
局限性:无法回复
TestFlight feedback is one-way. You cannot respond to testers through ASC. For follow-up:
- Contact through TestFlight group email
- Add in-app feedback mechanism
- Include your email in TestFlight notes
TestFlight反馈是单向的。你无法通过ASC回复测试者。如需跟进:
- 通过TestFlight群组邮件联系
- 添加应用内反馈机制
- 在TestFlight说明中留下你的邮箱
Metrics Dashboard
指标仪表盘
Path to Metrics
指标路径
App Store Connect
└── My Apps
└── [Your App]
└── Analytics
└── MetricsApp Store Connect
└── 我的应用
└── [你的应用]
└── 分析
└── 指标Available Metrics Categories
可用指标分类
| Category | What It Shows |
|---|---|
| Crashes | Crash-free users, crash count, top signatures |
| Hang Rate | Main thread hangs > 250ms |
| Disk Writes | Excessive disk I/O patterns |
| Launch Time | App startup performance |
| Memory | Peak memory usage, terminations |
| Battery | Energy usage during foreground/background |
| Scrolling | Scroll hitch rate |
| 分类 | 展示内容 |
|---|---|
| 崩溃 | 无崩溃用户占比、崩溃次数、top崩溃签名 |
| 卡顿率 | 主线程卡顿超过250ms的情况 |
| 磁盘写入 | 过度磁盘I/O模式 |
| 启动时间 | 应用启动性能 |
| 内存 | 峰值内存使用量、终止事件 |
| 电池 | 前台/后台期间的能耗 |
| 滚动 | 滚动卡顿率 |
Terminations (Non-Crash Kills)
终止事件(非崩溃类关闭)
The Metrics dashboard shows terminations that don't produce crash reports:
| Termination Type | Cause |
|---|---|
| Memory Limit | Jetsam killed app for memory pressure |
| CPU Limit (Background) | Exceeded background CPU quota |
| Launch Timeout | App took too long to launch |
| Background Task Timeout | Background task exceeded time limit |
指标仪表盘会显示不会生成崩溃报告的终止事件:
| 终止类型 | 原因 |
|---|---|
| 内存限制 | 因内存压力被Jetsam关闭应用 |
| CPU限制(后台) | 超出后台CPU配额 |
| 启动超时 | 应用启动耗时过长 |
| 后台任务超时 | 后台任务超出时间限制 |
Comparing Versions
版本对比
Use the Compare filter to see:
- Did crash rate improve or regress?
- Which version introduced a spike?
- Performance trends over releases
使用对比筛选器可查看:
- 崩溃率是提升还是恶化?
- 哪个版本导致崩溃率飙升?
- 各版本发布后的性能趋势
Exporting Data
导出数据
Manual Export
手动导出
- Navigate to Crashes or Metrics
- Use date range filter to select period
- Click Export (if available) or download individual crash logs
- 导航至崩溃或指标页面
- 使用日期范围筛选器选择时间段
- 点击导出按钮(若可用)或下载单个崩溃日志
App Store Connect API
App Store Connect API
For automated export, use the App Store Connect API:
bash
undefined如需自动导出,可使用App Store Connect API:
bash
undefinedGet crash diagnostic insights
获取崩溃诊断洞察
GET /v1/apps/{id}/perfPowerMetrics
GET /v1/apps/{id}/perfPowerMetrics
Authentication requires API key from ASC
认证需要ASC中的API密钥
Users and Access → Keys → App Store Connect API
用户与访问 → 密钥 → App Store Connect API
**API capabilities:**
| Endpoint | Data |
|----------|------|
| `perfPowerMetrics` | Performance and power metrics |
| `diagnosticSignatures` | Crash signature aggregates |
| `diagnosticLogs` | Individual crash logs |
| `betaTesters` | TestFlight tester info |
| `betaFeedback` | TestFlight feedback entries |
**API功能:**
| 接口 | 数据 |
|----------|------|
| `perfPowerMetrics` | 性能与功耗指标 |
| `diagnosticSignatures` | 崩溃签名聚合数据 |
| `diagnosticLogs` | 单个崩溃日志 |
| `betaTesters` | TestFlight测试者信息 |
| `betaFeedback` | TestFlight反馈条目 |Xcode Cloud Integration
Xcode Cloud 集成
If using Xcode Cloud, crash data integrates with CI/CD:
- View crashes per workflow run
- Compare crash rates between branches
- Automated alerts on crash spikes
若使用Xcode Cloud,崩溃数据可与CI/CD集成:
- 查看每个工作流运行的崩溃情况
- 对比不同分支的崩溃率
- 崩溃率飙升时自动触发警报
Best Practices
最佳实践
Daily Monitoring
日常监控
- Check crash-free users percentage
- Review any new crash signatures
- Monitor for version-to-version regressions
- 检查无崩溃用户占比
- 查看所有新的崩溃签名
- 监控版本间的崩溃率变化
Crash Triage Priority
崩溃分类优先级
| Priority | Criteria |
|---|---|
| P0 - Critical | >1% of users affected, data loss risk |
| P1 - High | >0.5% affected, user-facing impact |
| P2 - Medium | <0.5% affected, workaround exists |
| P3 - Low | Rare, edge case, no impact |
| 优先级 | 判断标准 |
|---|---|
| P0 - 严重 | 影响超过1%的用户,存在数据丢失风险 |
| P1 - 高 | 影响超过0.5%的用户,对用户体验有直接影响 |
| P2 - 中 | 影响不足0.5%的用户,存在可行的解决办法 |
| P3 - 低 | 罕见问题,边缘场景,无明显影响 |
Correlating with Releases
与版本发布关联分析
After each release:
- Wait 24-48 hours for crash data to populate
- Compare crash-free rate to previous version
- Investigate any new top crash signatures
- Check TestFlight feedback for user reports
每次版本发布后:
- 等待24-48小时让崩溃数据完成统计
- 对比当前版本与上一版本的无崩溃用户占比
- 调查所有新出现的top崩溃签名
- 查看TestFlight反馈中的用户报告
Common Questions
常见问题
Why don't I see crashes in ASC?
为什么我在ASC中看不到崩溃数据?
| Cause | Fix |
|---|---|
| Too recent | Wait 24 hours for processing |
| No users yet | Need active installs to report |
| User opted out | Requires device analytics sharing |
| Build not distributed | Must be TestFlight or App Store |
| 原因 | 解决办法 |
|---|---|
| 数据太新 | 等待24小时完成处理 |
| 暂无用户 | 需要有活跃安装用户才能上报 |
| 用户已退出 | 需要用户开启设备分析共享 |
| 构建版本未分发 | 必须是TestFlight或App Store分发的版本 |
Why are crashes unsymbolicated?
为什么崩溃数据未被符号化?
ASC crashes should auto-symbolicate if:
- You uploaded dSYMs during distribution
- "Upload debug symbols" was enabled
If still unsymbolicated:
- Download .ips file from ASC
- Use to locate dSYM by UUID
mdfind - Symbolicate with
atos
See agent:
crash-analyzer/axiom:analyze-crash若满足以下条件,ASC的崩溃数据应自动完成符号化:
- 分发时已上传dSYM文件
- 已启用"上传调试符号"选项
若仍未符号化:
- 从ASC下载.ips文件
- 使用通过UUID定位dSYM文件
mdfind - 使用进行符号化
atos
可查看 agent:
crash-analyzer/axiom:analyze-crashASC vs Organizer: Which stack trace is better?
ASC vs Organizer:哪个堆栈跟踪更优?
Both show the same data, but:
- Organizer integrates with Xcode projects (click to jump to code)
- ASC better for team-wide visibility and historical trends
两者展示的数据相同,但:
- Organizer与Xcode项目集成(点击可跳转至代码)
- ASC更适合团队范围内的可见性和历史趋势分析
Related
相关内容
Skills: axiom-testflight-triage (Xcode Organizer workflows)
Agents: crash-analyzer (automated crash log parsing)
Commands:
/axiom:analyze-crash技能: axiom-testflight-triage(Xcode Organizer工作流)
Agent: crash-analyzer(自动化崩溃日志解析)
命令:
/axiom:analyze-crashResources
参考资源
WWDC: 2020-10076, 2020-10078, 2021-10203, 2021-10258
Docs: /app-store-connect/api, /xcode/diagnosing-issues-using-crash-reports-and-device-logs
WWDC: 2020-10076, 2020-10078, 2021-10203, 2021-10258
文档: /app-store-connect/api, /xcode/diagnosing-issues-using-crash-reports-and-device-logs