Adapty 如何与应用商店同步数据

Adapty 会与 App Store 和 Google Play 交换产品数据,但这种交换既不是持续进行的,也并不完整。大多数数据只有在你主动操作时才会同步——例如将产品推送到应用商店,或上传新价格。有些数据则根本不会同步,因此 Adapty 与应用商店可能对同一产品显示不同的价格

Adapty 从应用商店读取哪些数据

Adapty 从应用商店读取产品列表、基础方案、价格和交易记录。如需修改产品或价格,请直接在应用商店后台进行更改。如需查看各国家/地区的具体价格,请从编辑产品页面下载价格 CSV 文件。

Adapty 读取的内容获取方式(App Store)获取方式(Google Play)
产品列表与审核状态通过 App Store Connect API 密钥通过服务账号
基础方案不适用订阅产品的组成部分
国家/地区特定价格关联或编辑商店产品时关联或编辑商店产品时
交易、续订与退款通过 App Store 服务器通知通过实时开发者通知
客户实际支付的价格随每笔交易一起获取随每笔交易一起获取

Adapty 向商店写入的内容

产品、价格和新用户优惠从 Adapty 发起,并在你执行操作时同步到商店,不会按计划自动执行。

Adapty 写入的内容何时同步到 App Store何时同步到 Google Play
新产品当你将产品推送到商店当你将产品推送到商店时
特定国家/地区价格当你上传价格 CSV 文件当你上传价格 CSV 文件时
新用户优惠免费试用当你推送新产品时不支持——请在 Google Play Console 中创建

Adapty 会将您的 CSV 文件与当前商店价格进行比对,仅更新有差异的价格,因此可以放心上传整个文件。现有订阅者将保留其注册时的价格,除非您勾选 Apply to existing subscribers

仅在 Adapty 中设置的内容

应用商店不会更改以下任何设置。

项目为何保留在 Adapty 中
已关联的商店产品价格这是一个在创建时固定的占位符,仅用于区分不同产品,不会传送至商店。分析、集成和 SDK 均使用商店的实际价格。
访问等级Adapty 负责授予对付费内容的访问权限,各应用商店没有对应的概念。
促销活动和赢回优惠 IDAdapty 需要该 ID 来签署购买请求。优惠本身需在商店控制台中创建。

设备端的工作原理

客户在付费墙上看到的价格,来自付费墙打开时 StoreKit 或 Google Play Billing 的实时数据,而非 Adapty。你在应用商店后台修改价格后,商店一旦发布,客户立即就能看到新价格。无需发布新版本,也无需在 Adapty 中做任何改动。

另一方面,Adapty SDK 会将每笔购买连同价格、货币和国家信息一并发送给 Adapty,Adapty 会以客户本地货币记录对应的收入。

Stripe、Paddle 和自定义商店

Stripe 和 Paddle 集成传递的是交易数据,而非你的产品目录。购买行为通过服务商的 Webhook 发送到 Adapty,或者对于自定义商店,则通过你自己的后端发送。你需要手动添加每个产品和价格 ID。如果某个 ID 在 Adapty 中不存在,则无法匹配任何内容,相关交易及其收入将不会显示。对于 Stripe 和 Paddle,即使产品已存在,但未设置 Subscription duration,也会出现同样的问题。这两种情况都不会有任何提示,因此请为你销售的每个产品都添加 ID 和时长。

产品与价格差异

Adapty 与应用商店后台之间的某些差异属于正常设计行为,不会影响用户实际支付的金额。但也有一些差异会导致收入无法被记录。

您看到的现象可能原因解决方法
Adapty 中的价格与商店不一致Products 页面显示的是您创建产品时填写的价格。如果您将产品推送到商店,Adapty 会以此作为初始定价。之后无法修改,因此一旦价格归商店管理,两侧就会出现差异。客户实际支付的价格是特定国家/地区价格无需操作。客户按商店价格付款,收入报告使用实际付款金额。如需修改价格,请在各商店后台编辑,或上传价格 CSV 同时更新两个商店。
产品下拉列表中找不到您的产品可能有三种原因:商店凭证失效会返回空列表;过去 10 分钟内创建的产品可能尚未同步到 Adapty 缓存的 App Store 列表;所选的 Subscription duration 会过滤列表:LifetimeNon-SubscriptionsConsumables 显示一次性产品,其他选项显示订阅产品。Subscription duration 设置为与商店中该产品类型匹配的值。如果产品是刚创建的,稍后重试。否则请检查您的商店凭证
新用户优惠未在 Adapty 中显示Adapty 仅在将新产品推送到商店时创建新用户优惠,且只列出它自己创建的优惠。在商店后台手动设置的优惠不会出现在 Edit product 窗口中。无需操作。新用户优惠会在客户符合条件时自动生效,无需在 Adapty 中添加。
购买时未应用折扣客户可能不符合条件——资格由商店判断,与 Adapty 无关。另外,App Store 促销活动未生效可能是因为 Adapty 无法使用您的 In-App Purchase Key 完成签名。确认密钥已上传且有效,然后在商店中检查优惠条件。
更改价格后 Stripe 交易不再显示在 Stripe 中更改价格会生成新的 price_id,而 Adapty 按 product_id + price_id 精确匹配事件。新价格的事件无法匹配任何记录,而 Stripe 仍会报告 webhook 已发送。在 Adapty 的产品中添加新的 price_id,否则相关收入将无法记录。请参阅 Stripe
客户已购买产品但未获得访问等级客户购买的商店产品 ID 未与 Adapty 中的产品关联。Adapty 会将购买记录到自动创建的产品行,但该行不包含访问等级。在 Adapty 中使用完全相同的商店产品 ID 创建产品,并为其分配访问等级
不再收到更新您的某个商店凭证已失效,每个凭证负责不同的数据交换环节。找出失效的环节,仅替换对应的凭证——请参阅更新停止接收时的处理方法

如果更新停止到达

Adapty 不会主动标记已失效的凭证。每个凭证负责数据交换的某一环节,因此可以根据具体症状判断需要替换哪个凭证。

停止工作的功能需要替换的凭证
产品列表、审核状态,或将产品和价格推送到商店App Store:App Store Connect API 密钥。Google Play:服务账号密钥文件
新交易、续订和退款App Store:服务器通知。Google Play:实时开发者通知
购买时的促销活动App Store:内购密钥
每位用户的购买验证App Store:共享密钥。Google Play:服务账号密钥文件

在应用商店控制台中替换凭据不会自动更新 Adapty 中的配置。请在 App settings 中上传新的凭据。