Google Cloud Storage

启用 Google Cloud Storage 集成,将订阅事件付费墙访问数据安全地存储在一个中心位置:您的 Google Cloud Storage 存储桶。

每天 UTC 时间凌晨 4 点,Adapty 会将前一天的数据以 .csv 文件形式上传到您的存储桶。您可以选择接收事件数据、付费墙访问数据,或两者均接收。您也可以随时手动导出任意时间段的数据。

要设置集成,请在您的 Google Cloud 控制台中生成存储桶访问密钥,并将其添加到 Adapty 设置中

上传计划与时长

Adapty 每 24 小时在 UTC 时间 04:00 向 Google Cloud Storage 上传数据。

文件包含在前一个日历日(UTC)内创建的事件数据。3 月 8 日上传的文件将包含 3 月 7 日 00:00:00 至 23:59:59 UTC 期间创建的所有事件。

该过程可能需要数小时,具体取决于队列中的文件总数以及您个人请求的数据量。如果 Adapty 在首次上传时包含历史数据,所需时间将长于后续的每日上传。

设置 Google Cloud Storage 集成

您需要拥有具有写入权限的有效 Google Cloud 服务账号密钥。如需生成该密钥,请按照创建凭证部分的步骤操作。

您可以为事件和付费墙访问使用不同的存储桶和不同的凭证。但是,如果任意一组凭证无效,两者的上传都将失败

前往 Integrations -> Google Cloud Storage,打开所需的标签页(EventsPaywall visits)。启用集成。

上传包含您的 Google Cloud 服务账号密钥的文件。指定目标存储桶文件夹。保存更改。

google-cloud-storage-setup.webp

事件数据的可选设置

您可以指定报告中包含哪些事件,并为事件设置自定义名称。有关可用事件的完整列表,请参阅事件文章。

event-specific-settings.webp
名称默认值描述
Exclude historical eventstrue排除在您将 Adapty SDK 集成到应用之前发生的事件信息。

如果您的分析平台在开始使用 Adapty 之前已接收订阅事件,此选项可确保其不会接收到任何重复事件。
实际示例

某用户于 1 月 10 日购买了月度订阅。3 月 1 日更新的应用程序是第一个包含 Adapty SDK 的版本。

如果此设置开启,报告将不包含 1 月份的”订阅开始”事件,也不包含 2 月份的”订阅续订”事件。但包含 3 月 10 日的”订阅续订”事件。

Include events without profilefalse包含未关联到用户画像或无法立即关联到特定用户的交易。这些可能包括在安装 Adapty SDK 之前进行的购买,或通过服务器通知收到的交易。
Send user attributesfalse包含自定义用户属性,例如用户数据和应用使用数据。如果您的 OneSignal 套餐支持超过 10 个标签,请选择此选项。请注意,超出标签限制可能会导致错误。

创建 Google Cloud Storage 凭证

本指南将帮助您在 Google Cloud Platform 控制台中创建必要的凭证。

为了让 Adapty 将原始数据报告上传到您指定的存储桶,需要提供服务账号密钥以及对相应存储桶的写入权限。通过提供服务账号密钥并授予对存储桶的写入权限,您允许 Adapty 安全高效地将原始数据报告从其平台传输到您的存储环境。

请注意,我们仅支持服务账号 HMAC 密钥授权,因此必须确保您的服务账号 HMAC 密钥已添加”Storage Object Viewer”、“Storage Legacy Bucket Writer”和”Storage Object Creator”角色,以启用对 Google Cloud Storage 的适当访问权限。

  1. 第一步,您需要前往 Google Cloud 账号的 IAM 部分,选择相关项目或创建新项目。
30a81ef-CleanShot_2023-03-17_at_15.22.142x.webp
  1. 接下来,点击”+ CREATE SERVICE ACCOUNT”按钮,为 Adapty 创建新的服务账号。

    98f8ebf-CleanShot_2023-03-17_at_15.40.062x.webp
  2. 填写第一步中的字段,访问权限将在后续阶段授予。如需了解此页面的更多详情,请阅读此处的文档。

    2190c50-CleanShot_2023-03-17_at_15.48.552x.webp
  3. 要创建并下载私有 JSON 密钥,请导航到 KEYS 部分并点击”ADD KEY”按钮。

    8a45468-CleanShot_2023-03-17_at_15.58.092x.webp
  4. 在 DETAILS 部分,找到与最近创建的服务账号关联的 Email 值并复制。后续步骤中授权账号并允许其写入存储桶时将需要此信息。

    6ccd0f0-CleanShot_2023-03-17_at_16.03.162x.webp
  5. 接下来,前往 Google Cloud Storage 的存储桶页面,选择现有存储桶或创建新存储桶以存储来自 Adapty 的事件或访问数据报告。然后导航到 PERMISSIONS 部分,选择GRANT ACCESS选项。

    3cdd937-CleanShot_2023-03-17_at_16.14.232x.webp
  6. 在 PERMISSIONS 部分,输入第五步中获取的服务账号 Email,然后选择 Storage Object Creator 角色。最后,点击 SAVE 应用更改。

    62801f4-CleanShot_2023-03-17_at_16.17.312x.webp

    请记住存储桶名称以备后用。

手动数据导出

除了自动将事件数据导出到 Google Cloud Storage 之外,Adapty 还提供手动文件导出功能。使用此功能,您可以选择特定时间段的事件数据,并手动将其导出到您的 GCS 存储桶。这使您能够更好地控制导出哪些数据以及何时导出。

指定的日期范围将用于导出从日期 A 00:00:00 UTC 到日期 B 23:59:59 UTC 期间创建的事件。

e347308-CleanShot_2023-03-17_at_17.39.452x.webp

数据结构

Adapty 使用 .csv 文件以表格格式导出数据。

事件内容可能会随时间增长——由我们或我们合作的第三方引入新数据。请确保您处理这些数据的代码足够健壮,依赖于特定字段,而非整体结构。

事件

您可以修改报告中包含的事件列表。

描述
profile_idAdapty 用户 ID。
event_type小写的事件名称。请参阅事件部分了解事件类型。
event_datetimeISO 8601 日期。
transaction_id交易的唯一标识符,例如购买或续订。
original_transaction_id原始购买的交易标识符。
subscription_expires_at订阅到期日期,通常为未来日期。
environment可以是 Sandbox 或 Production。
revenue_usd以美元计的收入,可能为空。
proceeds_usd以美元计的收益,可能为空。
net_revenue_usd以美元计的净收入(税后收入),可能为空。
tax_amount_usd以美元计的税款金额,可能为空。
revenue_local以本地货币计的收入,可能为空。
proceeds_local以本地货币计的收益,可能为空。
net_revenue_local以本地货币计的净收入(税后收入),可能为空。
tax_amount_local以本地货币计的税款金额,可能为空。
customer_user_id开发者用户 ID,例如可以是您的用户 UUID、电子邮件或其他任何 ID。如果未设置则为 Null。
store可以是 app_storeplay_store
product_idApple App Store、Google Play Store 或 Stripe 中的产品 ID。
base_plan_idGoogle Play Store 中的基础方案 ID 或 Stripe 中的价格 ID
developer_id交易来源付费墙的开发者(SDK)ID。
ab_test_name交易来源 A/B 测试的名称。
ab_test_revision交易来源 A/B 测试的版本。
paywall_name交易来源付费墙的名称。
paywall_revision交易来源付费墙的版本。
profile_country由 Adapty 根据 IP 确定的用户画像所在国家/地区。
install_date安装发生时的 ISO 8601 日期。
idfviOS 设备上的 identifierForVendor
idfaiOS 设备上的 advertisingIdentifier
advertising_id广告 ID 是 Android 操作系统分配的唯一代码,广告商可能用于唯一标识用户设备。
ip_address设备 IP(可以是 IPv4 或 IPv6,优先使用 IPv4)。每次设备 IP 变更时更新。
cancellation_reason

用户取消订阅的原因。

可能的值:

iOS & Androidvoluntarily_cancelledbilling_errorrefund

仅 iOSprice_increaseproduct_was_not_availableunknownupgraded

仅 Androidnew_subscription_replacecancelled_by_developer

android_app_set_idAppSetId — 每台设备、每个开发者账号唯一的、用户可重置的 ID,用于非盈利广告用途。
android_id在 Android 8.0(API 级别 26)及更高版本平台上,是一个 64 位数字(以十六进制字符串表示),对于每个应用签名密钥、用户和设备的组合唯一。详情请参阅 Android 开发者文档
device面向最终用户的设备型号名称。
currency交易的 3 字母货币代码(ISO-4217)。
store_country由 Apple/Google 商店确定的用户画像所在国家/地区。
attribution_source归因来源。
attribution_network_user_id归因来源分配给用户的 ID。
attribution_status可以是 organic、non_organic 或 unknown。
attribution_channel营销渠道名称。
attribution_campaign营销活动名称。
attribution_ad_group归因广告组。
attribution_ad_set归因广告集。
attribution_creative归因创意关键词。
attributes自定义用户属性的 JSON。这将包含您设置为从移动应用发送的任何自定义属性。要发送此数据,请在 Integrations -> Webhooks 页面中启用 Send User Attributes 选项。
integration_ids与用户画像关联的所有集成 ID。字典格式。示例:{‘mixpanel_user_id’: ‘mixpanelUserId-test’, ‘facebook_anonymous_id’: ‘facebookAnonymousId-test’}

付费墙访问

描述
profile_idAdapty 用户 ID。
customer_user_id开发者用户 ID,例如可以是您的用户 UUID、电子邮件或其他任何 ID。如果未设置则为 Null。
profile_country由 Apple/Google 商店确定的用户画像所在国家/地区。
install_date安装发生时的 ISO 8601 日期。
store可以是 app_storeplay_store
paywall_showed_at付费墙向客户展示的日期。
developer_id交易来源付费墙的开发者(SDK)ID。
ab_test_name交易来源 A/B 测试的名称。
ab_test_revision交易来源 A/B 测试的版本。
paywall_name交易来源付费墙的名称。
paywall_revision交易来源付费墙的版本。

故障排查

Adapty 在开始上传之前会检查您的访问密钥的有效性。即使只有一个 Google Cloud Storage 密钥无效,Adapty 也会中止上传并抛出错误。

为确保上传不中断,请在密钥过期之前替换它们。如果您更新了事件的密钥,请不要忘记同时更新付费墙访问的密钥,反之亦然。