Google Cloud Storage 集成 | Adapty 文档

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 存储集成

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

您可以为事件和付费墙访问分别使用不同的存储桶和凭证。但是,如果任意一方的凭证无效,两项上传均会失败

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

上传包含 Google Cloud service account key 的文件,指定目标 bucketfolder,保存更改。

google-cloud-storage-setup.webp

事件数据的可选设置

你可以指定要包含在报告中的事件,并为事件设置自定义名称。完整的可用事件列表请参阅 events 文章。

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 Console 中创建所需的凭据。

为了让 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 的 Buckets 页面,选择已有的存储桶或创建新存储桶,用于存储来自 Adapty 的 Event 或 Visits Data 报告。然后导航到 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 文件以表格格式导出数据。

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

事件

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

Adapty 使用 currencylayer.com 的汇率(每 8 小时更新一次)将其他货币换算为美元。汇率在交易发生时锁定——后续汇率变动不会影响已换算的结果。

列名描述
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_countryAdapty 根据 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 level 26)及更高版本上,该字段为一个 64 位数字(以十六进制字符串表示),对应用签名密钥、用户和设备的每种组合唯一。详情请参阅 Android 开发者文档
device对终端用户可见的设备型号名称。
currency交易的三字母货币代码(ISO-4217)。
store_countryApple/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_dateISO 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 也会中止上传并抛出错误。

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