排查 App Store 集成问题

本文介绍常见的 App Store 集成问题,每个部分均包含症状描述、根本原因及解决方案。

保存凭据时提示”The provided field values are incorrect”

当你保存应用内购买凭据时,Adapty 会根据 In-app purchase Issuer IDIn-app purchase Key ID.p8 文件 构建身份验证令牌,并与 Apple 进行验证。此错误表示 Apple 拒绝了该令牌。请按以下顺序逐一检查:

  1. 密钥类型。 密钥必须是 App Store Connect 中 Users and AccessIntegrationsIn-App Purchase 下的 In-App Purchase 密钥。Team keys 标签页中的密钥(即 App Store Connect API 密钥)有其自己的 Issuer IDKey ID,但 Apple 在此处会拒绝该密钥——那类密钥应用于配置的第 6 步
  2. 同一账号和团队。 Issuer ID、Key ID 和 .p8 文件必须来自与应用相同的 App Store Connect 团队。在其他团队账号(例如代理商账号)中生成的密钥将无法通过验证。
  3. .p8 文件本身。 请按从 App Store Connect 下载的原始文件上传,不要做任何修改。通过粘贴密钥内容重新生成的文件通常会验证失败。App Store Connect 只允许下载一次密钥,若原始文件已丢失,请重新生成新密钥。
  4. Bundle ID。 Bundle ID 必须与 App Store Connect 中应用的 Bundle ID 完全一致——采用反向 DNS 格式,不含空格,例如 com.company.app
  5. 隐藏字符。 请直接从 App Store Connect 重新复制每个 ID。多余的空格或形似字符——例如用小写字母 l 代替数字 1——都会导致验证失败。

此验证仅使用三个内购密钥字段和 Bundle ID。App-Specific Shared Secret 和 App Store Connect API 密钥不参与此验证,因此重新输入其中任何一个都不会改变结果。

产品未显示

以下两种表现通常指向同一个根本原因:

  • App Store Connect API 密钥配置正确,但 Adapty 无法获取任何产品。
  • 产品已在 App Store Connect 中创建,但未出现在 Adapty 中,或显示数量少于预期。SDK 在尝试购买时报告 “Product Id not found”。 最常见的根本原因是 Apple 协议未签署 — 付款协议、税务表格或银行表格处于待处理或未签署状态。当协议处于待处理状态时,App Store Connect API 会在产品相关端点静默返回 403 错误。Adapty 不会收到任何明确的报错提示,产品会被静默过滤掉。

请前往 App Store Connect → Agreements, Tax, and Banking,签署所有待处理的协议。然后在 Adapty 的 App settings → iOS SDK 中重新同步。

App Store 服务器通知显示”Delayed”

在 App Store Connect 中,App Store 服务器通知的状态可能会显示为 Delayed。这意味着 Apple 在发送订阅事件通知方面出现了延迟——续订、取消和账单问题等通知会排队等待,并延迟到达。

安装统计数据不受影响。Adapty 从应用首次启动开始统计安装量,而非依赖服务器端通知。

如果续订或取消数据出现滞后,Delayed 状态是最可能的原因。随着 Apple 处理积压的通知,该状态通常会自动恢复正常。

购买成功但用户失去访问权限

用户完成付款后短暂获得了访问权限,但下次应用从 Adapty 刷新用户画像时访问权限消失。Apple 已扣款,但交易从未到达 Adapty——在此之前,该用户画像没有任何访问等级,且这笔销售也不会出现在你的报告中。

原因通常是以下几种之一:

  • 凭据失效:Adapty 无法通过 Apple 验证交易。请参考更新停止推送时的处理方法逐一排查凭据,并替换负责购买验证的凭据。
  • 产品未在 Adapty 中关联:客户购买的 Store 产品 ID 未关联到任何 Adapty 产品,因此没有可授予的访问等级。请确认该产品以正确的 App Store Product ID 存在,并已分配访问等级

Adapty SDK 会持续重试该交易,因此一旦 Adapty 能够记录,访问等级便会恢复。

Adapty 中的价格与 App Store 不匹配

Adapty 产品编辑页面上的价格字段的行为方式取决于产品的添加方式。

如果你在 Adapty 中创建产品并从看板推送到商店,该价格将作为商店的初始价格使用。 如果你添加的产品在商店中已存在,此价格仅作为占位符使用。Adapty 的分析、集成和 SDK 均以从 App Store 实际获取的价格为准,而非该占位符。App Store 价格发生变更后不会同步更新占位符,且目前无法在看板中手动编辑占位符。

CSV 价格导出为空

如果你导出的 CSV 价格文件只有列标题,说明 App Store Connect API 密钥未完成配置。请参阅第 6 步 — 添加 App Store Connect API 密钥

无法将新产品推送至 App Store

当你在看板中创建产品时,Adapty 可以将新产品推送至 App Store Connect。如果你的 App Store 集成尚未完整配置,推送选项将被禁用。以下两项设置为必填项: