App 状态监控系统

App Store Connect 后台管理

📱 App 状态监控
🔑 账号管理 📦 App 管理 📊 统一数据报表 👥 成员管理 ✈️ Telegram 管理 ⏰ 定时任务 🔔 Webhook 通知 ⚙️ 全局配置 📋 日志管理 📖 使用文档
修改密码 · 退出登录

App Store Connect 账号

ID邮箱账号状态Key IDIssuer IDVendor Number添加人更新时间操作

暂无账号,点击右上角"新增账号"添加

App 状态

正在通过 App Store Connect API 获取数据…

App 名称Bundle ID版本审核状态中国大陆销售是否可下载下载链接最近变更时间定时任务

App 管理

按账号更新时间
按 App 状态(勾选后刷新)

加载中…

已选 0 项
IDApp 名称Bundle ID版本审核状态中国大陆销售是否可下载所属账号活跃度定时任务Webhook下载链接最近变更时间

暂无 App,请先在"账号管理"中点击"查看"使 App 入库

统一数据报表

数据来自 App Store Connect Sales Reports。对账请用「首次下载」;「重新下载」为卸载重装等虚高,应剔除。 Product Type:1*/F1=首次,3*/F3=重新下载,7*/F7=更新。

1筛选 App

按状态、新增/变化时间、名称缩小范围

2选择 App

勾选一个或多个 App(可跨账号汇总)
已选 0 个

未搜索到 App,请调整筛选条件

3统计区间 & 出报表

选择销售数据的日期范围后汇总
首次下载 对账口径
—
Product Type 1* / F1
重新下载 对账剔除
—
Product Type 3* / F3
更新
—
Product Type 7* / F7
总下载(首下+重下)
—
含虚高,勿直接对账

正在拉取 / 聚合销售报表…

按 App

App Apple ID 首次下载 重新下载 更新

暂无 App 数据

下载来源

App Analytics · Source Type(首次注册后约 24~48h 出数)
来源 首次下载 重新下载 总下载 占比(首下)

暂无下载来源数据

按国家 / 地区

海外结算主体对账
国家/地区 首次下载 重新下载 更新 占比(首下)

暂无国家数据

按设备

iPhone / iPad / Mac
设备 首次下载 重新下载 更新 占比(首下)

暂无设备数据

按日趋势

仅展示首次下载(对账口径)
日期 首次下载 重新下载 更新

成员管理

ID用户名新增查看修改删除创建时间操作

暂无成员

Telegram 频道 / 群组

ID机器人名称频道/群组名称频道/群组 ID更新时间操作

暂无频道/群组

定时任务

ID名称描述触发规则通知频道App 数状态最近执行操作

暂无定时任务

Webhook 通知(App Store Connect 主动推送)

已选 0 项
IDWebhook 名称AppApp 版本App 状态所属账号事件类型通知频道状态操作

暂无 Webhook,点击右上角"新增 Webhook"添加

操作日志

时间用户 / 来源操作详情IP

📖 使用文档

本文档介绍系统三大核心机制:定时任务、状态管理、通知。帮助你理解数据从哪来、状态怎么算、通知何时发。文档仅管理员可见。

快速跳转 ① 定时任务 ② 状态管理 ③ 通知 ④ 常见问题

① 定时任务

系统的定时能力分两类:后台系统任务(内置、自动运行,无需配置)和用户自定义定时任务(你在「⏰ 定时任务」里手动创建)。所有定时逻辑由一个每分钟触发一次的 Cron 统一驱动。

A. 后台系统任务(自动运行)

每分钟触发时,系统按顺序执行以下后台任务。它们都采用「分片 / 分级」策略——每次只处理少量到期对象,把负载摊平到时间线上,避免定时点雪崩,也避免触发 Apple 接口限流。

任务作用频率 / 触发条件
用户自定义任务到点检查关联 App 的版本 / 状态,有变更则更新入库并推送到任务频道按每个任务的 Cron 表达式
自动分级刷新按账号「活跃度档位」自动刷新账号下 App 的状态(见下方档位表)活跃 1 小时 / 一般 6 小时 / 较冷 每周 / 冷冻 每月
销售报表分片预同步提前拉取销售报表,报表页即读即得、无需现拉约每 12 小时 / 账号(需配置 Vendor Number)
下载来源同步同步 Analytics 下载来源数据约每 20 小时 / App(需开启「获取下载来源」)
可下载性监控同步计算「中国大陆销售 / 是否可下载」两列处理中 10 分钟 / 常规 30 分钟 / 终态 7 天兜底(需开启自动同步)
日志清理删除过期日志(保留 30 天,并有总行数上限)每天凌晨 3:00(北京时间)

💡 活跃度分级刷新:系统按账号「距上次实质变化的天数」判定档位,越活跃刷得越勤,越冷越省——既保证及时性又节约 Apple 接口调用。

档位判定条件(距上次变化)自动刷新间隔
活跃(hot)7 天内有变化每 1 小时
一般(warm)7 ~ 90 天每 6 小时
较冷(cold)90 ~ 180 天每周
冷冻(frozen)180 天以上每月

B. 用户自定义定时任务(手动创建)

  1. 进入「⏰ 定时任务」,新建任务:填写名称、Cron 表达式(决定执行时间)、通知频道 / 群组。
  2. 到「📦 App 管理」把要监控的 App 关联到该任务(可单个设置,或勾选多个后用批量「定时任务」)。
  3. Cron 到点时,任务会实时查询这些 App 的最新版本 / 审核状态,只有发生变化才更新数据库、写入日志,并把变更汇总推送到任务频道。

📌 Cron 表达式为标准 5 段格式:分 时 日 月 周。例:0 9 * * * = 每天 09:00;*/30 * * * * = 每 30 分钟;0 * * * * = 每小时整点。

② 状态管理

系统围绕两个维度描述一个 App:App 状态(审核 / 发布进度) 和 地区可下载性(当前只判中国大陆)。两者相互独立,展示在不同列。

A. App 状态(App statuses)

反映 App / 版本的整体审核与发布进度,取值来自 App Store Connect。常见状态与中文对照:

状态含义是否可下载(仅按 App 状态维度)
PREPARE_FOR_SUBMISSION准备提交否(从未上架)
WAITING_FOR_REVIEW / IN_REVIEW等待审核 / 审核中看是否有历史已发布版本
PENDING_DEVELOPER_RELEASE待开发者发布看是否有历史已发布版本
READY_FOR_DISTRIBUTION / READY_FOR_SALE已上架 / 可供销售是(已发布)
REJECTED / METADATA_REJECTED / DEVELOPER_REJECTED被拒 / 元数据被拒 / 开发者撤回看是否有历史已发布版本
REMOVED_FROM_SALE已下架(App 级)否
DEVELOPER_REMOVED_FROM_SALE开发者主动下架否

💡 关键点:一个 App 是否可下载,主要看它是否存在一个「已发布」的版本。新版本正在审核 / 被拒时,只要旧版本仍是已上架,用户依然能下载旧版本。

B. 中国大陆「销售状态」与「是否可下载」(两列)

在「App 管理」和「账号 → 查看 App」列表里,中国大陆用两列表达,二者含义不同:

列是什么取值
中国大陆销售Apple 归一化后的地区销售态(你手动设的可售开关 + 苹果自动施加的限制 综合而来)可售 / 不可销售 / 未上架 / 预售 / 处理中 / 发布后可售
是否可下载系统综合判定的最终结论;旁边「?」可查看判定原因、置信度与四维明细🟢 可下载(版本号) / 🔴 不可下载
  • 销售状态是「输入」,可下载是「最终结论」。例:你把「中国大陆可售」开关打开了(已设为可售=是),但苹果侧返回 CANNOT_SELL(如 ICP 备案 / 资质问题),最终仍判「不可下载」,原因显示 CANNOT_SELL。
  • 不可销售 = 苹果侧禁止销售;未上架 = 你没在该地区开启销售。二者不同。
  • 可下载时括号内显示实际可下载的版本号;若它与最新版本不同(如最新 1.1 审核中、1.0 仍可下载),版本号会橙色高亮提示。
  • 检测地区可在「⚙️ 全局配置 → 可下载性检测地区」切换(单选,默认中国大陆)。

C. 状态数据从哪来 / 何时更新

来源说明
手动「查看账号 / 刷新」立即向 Apple 拉取,并顺带实时检测中国大陆可售性(并发加速)
后台自动分级刷新按活跃度档位定期刷新(见上表)
Webhook 实时推送Apple 主动推送版本状态变更,秒级同步入库
用户定时任务按 Cron 检查关联 App 是否有变化

③ 通知

系统有四条相互独立的通知链路,均通过 Telegram 推送。请先在「✈️ Telegram 管理」配置好机器人与频道 / 群组。

通知链路触发来源在哪配置
Webhook 实时通知Apple 主动推送的事件(最及时)🔔 Webhook 通知(每个 Webhook 独立配置)
后台轮询变更通知分级刷新 / 按状态刷新 / 手动刷新时检测到版本或状态变化⚙️ 全局配置 → 状态轮询变更通知频道
用户定时任务通知任务 Cron 到点且关联 App 有变化⏰ 定时任务(每个任务选频道)
可下载性事件通知中国大陆上架 / 下架事件⚙️ 全局配置 → 可下载性通知频道

Webhook 精细化通知(A/B 过滤)

一个 Webhook 可绑定多个频道 / 群组,每个频道可单独选择接收哪些「版本状态变更」。状态变更按迁移方向分两类:

  • 进入 (A 类:任意 → 目标):当状态变为你勾选的目标状态时通知(判断新状态 newValue)。例:勾选「已上架」= App 一旦上架就通知。
  • 离开 (B 类:目标 → 任意):当状态离开你勾选的目标状态时通知(判断旧状态 oldValue)。例:勾选「已上架」= App 一旦从上架变成别的(下架 / 重新审核)就通知。

📐 判定规则:进入(A) 命中 或 离开(B) 命中,即发送(两者取并集)。每个频道至少合计勾选 1 个状态;默认全选 = 收到所有变更。一次事件即便同时命中 A 和 B,对同一频道也只发一条,不会重复。

  • 提供预设按钮快速勾选:全选 / 清空 / 上线 / 被拒·异常 / 下架 / 审核进度。
  • 非「版本状态变更」类事件(如构建上传、Beta 测试)不做 A/B 过滤,会发给该 Webhook 的所有订阅频道。
  • 若 Apple 推来一个系统未收录的新状态,会照常通知(宁可多发、不漏报)。
  • 批量订阅(App 管理页批量「Webhook」)和全局自动 Webhook(新账号自动创建)也都支持同样的 A/B 选择。

创建 Webhook 的步骤

  1. 确保已配置服务公网地址(PUBLIC_BASE_URL),否则 Apple 无法回调。
  2. 「🔔 Webhook 通知」→ 新增,选择账号与要监听的 App、订阅的事件类型。
  3. 添加一个或多个通知频道,为每个频道设置「进入(A) / 离开(B)」接收范围(默认全选)。
  4. 保存后系统会自动在 Apple 端注册回调;之后状态变更会实时推送。

④ 常见问题

  • 为什么「已设为可售=是」却显示不可下载? 因为苹果侧返回了阻断状态(如 CANNOT_SELL / ICP 备案缺失),其优先级高于你的可售开关,实际用户无法下载。点「?」可看具体原因。
  • Webhook 和轮询 / 定时任务的区别? Webhook 是 Apple 主动推、最及时;轮询与定时任务是系统定期主动查、作为兜底与补充。三者通知频道相互独立,便于区分来源。
  • 不想收到太多通知怎么办? 在 Webhook 的每个频道里,用 A/B 只勾选你关心的状态(如只勾「进入:已上架 / 被拒」),或用预设按钮快速设置。
  • 冷账号会不会永远不刷新? 不会。冷冻档位仍每月刷新一次兜底;你也可以随时手动「查看 / 刷新」强制更新。

全局配置

加载中…

新账号自动创建 Webhook
开启后,每当新增一个 App Store Connect 账号,系统会自动拉取该账号下的全部 App,并为每个 App 注册一个 Webhook(名称取 App 名称,验签密钥随机生成),事件默认既记录又推送到下方所选频道 / 群组。需已配置服务公网地址 PUBLIC_BASE_URL。
状态轮询变更通知频道 / 群组
后台轮询(自动分级刷新 / 按状态刷新 / 手动刷新账号)检测到 App 版本或审核状态变化时,推送到此频道。与 Webhook 实时通知、定时任务通知分开,便于区分来源。留空 = 仅记录日志、不推送。
账号「疑似封号」判定阈值
开发者账号被封 / API 密钥被吊销后,App Store Connect 会对该账号所有请求返回 401「Authentication credentials are missing or invalid」。为避免密钥配错、偶发故障导致误判,系统会累计连续鉴权失败次数,达到此阈值才把账号标记为「疑似封号」(在账号列表以红色徽章展示,并推送到状态轮询变更通知频道)。任意一次成功访问即自动恢复正常。
可下载性检测地区
选择一个目标地区,系统只判断该地区普通用户能否通过 App Store 下载(销售状态 + 是否可下载两列均按此地区展示)。默认中国大陆。切换后新地区的状态会由后台自动同步或在「查看账号」时逐步补齐。
获取下载来源(Analytics Source Type)
开启后,统一数据报表页会展示「下载来源」面板(App Store 搜索 / 浏览、App / 网页引荐 等),并在查询时调用 App Store Connect Analytics API 注册并拉取来源数据;同时后台定时任务会对已注册的 App 每天自动同步一次来源数据,无需手动打开页面。数据源为异步报表,首次注册后约 24~48 小时才产出、且有 1~2 天延迟。关闭时不展示该面板、后台也不会调用相关 API。

新增账号

新增成员

新增频道/群组

新增定时任务

加入定时任务

批量加入定时任务

批量订阅 Webhook 通知

新增 Webhook

记录

可下载性详情

删除确认

修改密码