将历史数据导入 Adapty
安装 Adapty SDK 并发布应用后,你可以在 Profiles 部分查看用户和订阅者。但如果你有旧系统需要迁移到 Adapty,或者只是想在 Adapty 中查看现有数据,该怎么办?
数据导入并非必须
一旦用户打开集成了 Adapty SDK 的应用,Adapty 会自动为历史用户授予访问等级并恢复其购买事件。在这种情况下,无需导入历史数据。不过,如果你有大量历史交易记录,导入数据可以确保分析数据的准确性,但对于迁移而言通常并非必须。
将数据导入 Adapty 的步骤如下:
- 将交易记录导出为 CSV 文件(iOS、Android 和 Stripe 需分别提供独立文件)。详细格式要求请参阅下方的导入文件格式说明。
- 如果任意文件超过 1 GB,请准备一个约 100 行的数据样本。
- 将所有文件上传至 Google Drive(可以压缩,但需保持独立文件)。
- 对于 iOS 交易记录,即使使用的是 StoreKit 1,也请确保 App settings 中的 In-app purchase API 部分已填写 Issuer ID、Key ID 及 Private key(.P8 文件)。详细操作说明请参阅提供 Issuer ID 和 Key ID 及上传 In-App Purchase Key 文件。
- 通过电子邮件或 Adapty 看板内的在线客服将链接分享给我们的团队。
放心,导入历史数据不会产生重复记录,即使数据与 Adapty 中已有条目存在重叠。
Android 已知限制
- 只会恢复有效订阅,已过期的交易记录不会被恢复。
- 只会恢复订阅中最近一次续订记录,完整的购买链不会被恢复。
- 如果产品价格在购买后发生了变化,将使用当前价格,可能导致定价不准确。
如果你有大量 Android 交易记录,在开始导入前可能需要申请提高 Google Play Developer API 配额,以避免超出默认 API 限制。
导入文件格式
如果你正在从 RevenueCat 迁移,可以直接发送 RevenueCat 导出文件,无需转换。导出说明请参阅 RevenueCat 文档。
请按照以下规则准备数据文件:
- 文件格式为 .CSV。
- Android、iOS 和 Stripe 导入需使用独立文件。
- 每个导入文件包含所有必填列。
- 导入文件中的列需有标题行。
- 列标题须与下表 Column name 列中的内容完全一致,请仔细检查是否有拼写错误。
- 不需要的列可以不出现在文件中,不要为没有数据的字段添加空列。
- 导入文件不应包含表中未提及的额外列,如有请删除。
- 值之间用逗号分隔。
- 值不需要用引号括起来。
- 如果一个用户有多个 apple_original_transaction_id,请为每个 apple_original_transaction_id 单独添加一行,否则可能无法恢复消耗型商品的购买记录。
iOS 和 Android 的示例文件请参考:iOS 和 Android。
可用的导入文件列
| 列名 | 是否必填 | 说明 |
|---|---|---|
| user_id | 必填 | 你的用户 ID |
| apple_original_transaction_id | iOS 必填 | 原始交易 ID(OTID,了解更多),用于 StoreKit 2 导入机制。由于一个用户可能有多个 OTID,只需提供至少一个即可成功导入。 注意: 此导入需要在 Adapty 看板中配置 In-app purchase API 凭据。操作说明请参阅此处。 |
| google_product_id | Google 必填 | Google Play Store 中的产品 ID。 |
| google_purchase_token | Google 必填 | 唯一标识符,代表用户及其购买的应用内产品 ID |
| google_is_subscription | Google 必填 | 可选值为 1 | 0 |
| stripe_token | Stripe 必填 | 代表唯一购买记录的 Stripe 对象 token,可以是 Stripe 订阅的 token(sub_...)或 Payment Intent 的 token(pi_...)。 |
| subscription_expiration_date | 可选 | 订阅到期日期,即下次扣费日期,包含时区的日期时间格式(2020-12-31T23:59:59-06:00) |
| created_at | 可选 | 用户画像创建的日期时间(2019-12-31 23:59:59-06:00) |
| birthday | 可选 | 用户生日,格式为 2000-12-31 |
| 可选 | 用户的电子邮件地址 | |
| gender | 可选 | 用户性别 |
| phone_number | 可选 | 用户的电话号码 |
| country | 可选 | 格式为 ISO 3166-1 alpha-2 |
| first_name | 可选 | 用户名字 |
| last_name | 可选 | 用户姓氏 |
| last_seen | 可选 | 包含时区的日期时间(2020-12-31T23:59:59-06:00) |
| idfa | 可选 | 广告标识符(IDFA)是 Apple 为用户设备随机分配的设备标识符,仅适用于 iOS 应用 |
| idfv | 可选 | 供应商标识符(IDFV)是分配给同一开发者旗下所有应用的唯一代码,仅适用于 iOS 应用 |
| advertising_id | 可选 | 广告 ID 是由 Android 操作系统分配的唯一代码,广告商可用其唯一标识用户设备 |
| amplitude_user_id | 可选 | Amplitude 中的用户 ID |
| amplitude_device_id | 可选 | Amplitude 中的设备 ID |
| mixpanel_user_id | 可选 | Mixpanel 中的用户 ID |
| appmetrica_profile_id | 可选 | AppMetrica 中的用户画像 ID |
| appmetrica_device_id | 可选 | AppMetrica 中的设备 ID |
| appsflyer_id | 可选 | AppsFlyer 的唯一标识符 |
| adjust_device_id | 可选 | Adjust 中的设备 ID |
| facebook_anonymous_id | 可选 | Facebook 为匿名与你的应用或网站互动(即未登录 Facebook)的用户生成的唯一标识符 |
| branch_id | 可选 | Branch 的唯一标识符 |
| attribution_source | 可选 | 归因来源集成,例如 appsflyer |
| attribution_status | 可选 | organic |
| attribution_channel | 可选 | 带来该交易的归因渠道 |
| attribution_campaign | 可选 | 带来该交易的归因活动 |
| attribution_ad_group | 可选 | 带来该交易的归因广告组 |
| attribution_ad_set | 可选 | 带来该交易的归因广告集 |
| attribution_creative | 可选 | 广告或营销活动中用于追踪效果的具体视觉或文字素材,用于衡量其在推动点击、转化或安装等目标行为方面的效果 |
| custom_attributes | 可选 | 以 JSON 字典的键值格式定义最多 30 个自定义属性:
格式: 注意格式中双引号和单引号的使用,布尔值和整数将被转换为浮点数。 |
必填字段
每个平台有两组必填字段:user_id 以及用于识别对应平台购买记录的数据。各平台的必填字段请参见下表。
| 平台 | 必填字段 |
|---|---|
| iOS | user_id apple_original_transaction_id |
| Android | user_id google_product_id google_purchase_token google_is_subscription |
| Stripe | user_id stripe_token |
缺少这些字段,Adapty 将无法获取交易记录。
为了获得准确的同期群分析,请填写 created_at。若未提供,我们将以首次购买日期作为安装日期。
将数据导入 Adapty
请通过 [email protected] 或 Adapty 看板 内的在线客服联系我们并分享导入文件。