我们能为您提供什么帮助?

设置ROI360商店收入 高阶付费

  • 更新

概要: 设置 AppsFlyer ROI360 应用商店收入解决方案。

概览

 注意

如需了解有关 ROI360 的更多信息(包括其工作原理以及如何在 AppsFlyer 中启用该功能),请参阅《关于 ROI360 商店收入》。

要设置 ROI360 店铺收入,请按以下顺序完成以下步骤:

  1. 设置商店凭据(iOS 和 Android):
    • iOS在 AppsFlyer 中配置 App Store Connect 密钥(应用内购买密钥、密钥 ID 和发行者 ID)。
    • 安卓配置一个 Google Cloud 服务账户,在 Google Play 控制台中设置所需权限,并将服务账户的 JSON 密钥上传至 AppsFlyer。
  2. 配置服务器通知(iOS 和 Android):
    • iOS设置 App Store 服务器通知,可通过直接将通知发送至 AppsFlyer(推荐)或从您自己的端点转发通知,并验证集成是否成功。
    • 安卓设置 Google Play 实时开发者通知 (RTDN),方法包括允许 Google Play 直接向 AppsFlyer 发送通知(推荐),或通过 Pub/Sub 转发通知。
  3. 实现 SDK 连接器:帮助开发者做好集成 AppsFlyer 购买 SDK 连接器的准备。
  4. 验证 SDK 实现:在两个平台上测试应用内购买和订阅功能,以确认 AppsFlyer 能正确接收并处理 SDK 事件和服务器通知。
  5. 验证并更新设置:审查并确认购买验证、退款处理、订阅统计和商店集成等环节的状态,以确保跨平台收入归因的准确性和持续性。
  6. 应用版本:发布已集成 SDK Connector 的更新版应用,确保已禁用沙盒标记,且验证规则允许所需的收入事件。

步骤2(iOS):设置App Store Connect密钥

在步骤1中,从App Store Connect获取以下凭据,并填写在AppsFlyer后台的收入设置页面中:

  • In-App Purchase key
  • Key ID
  • Issuer ID

前期准备 :

设置证书时,您需要在App Store Connect和AppsFlyer中分别完成相关步骤。请在操作过程中同时打开App Store Connect和AppsFlyer两个标签页。

1.1 生成App Store Connect密钥

要设置iOS凭据, 请按照以下步骤操作:

  1. 在App Store Connect中,进入用户和访问权限页面

  2. 前往用户和访问权限> 对接,在密钥列表中,选择应用内购买。

  3. 点击+生成一个新的应用内购买密钥。

  4. 输入您的API密钥名称。
  5. 点击生成。
  6. 在生成的密钥旁边,点击下载应用内购买密钥。 注意:该密钥只能下载一次,请妥善保存。
  7. 在App Store Connect中,复制生成的密钥的Key ID,并将其粘贴到AppsFlyer购买和订阅设置中的Key ID字段里。

  8. 复制发行者 ID。 注意: 如果页面顶部未显示Issuer ID,请创建一个App Store Connect API私钥(具有任意权限级别)。之后,Issuer ID将出现在应用内购买私钥的页面顶部。

1.2 在AppsFlyer中设置App Store Connect密钥

  1. 启用 ROI360 商店收入。 
  2. 在“App Store Connect 密钥”步骤下,点击“应用内购买”密钥字段中的“上传”按钮,上传 p8 文件。
  3. 在名为App Store Connect密钥的部分,粘贴您从App Store Connect复制的值。

    • Key ID
    • Issuer ID
  4. 点击验证密钥,确保密钥输入正确。 注意:如果您的应用尚未在App Store中发布,验证密钥可能无法正常工作。
  5. 点击保存并继续。

步骤 2(Android):设置服务账户密钥和权限

请从App Store Connect获取以下凭据,并填写在AppsFlyer后台的收入设置页面中:

前期准备 :

  • 设置应用内购买和订阅收入衡量时,您需要在Google Cloud Platform、Google Play Console以及AppsFlyer界面中分别完成相关操作。建议您在设置过程中同时打开以上三个标签页。
  • 在AppsFlyer后台进行设置需具备管理员权限。

1.1.将您的Google Play开发者账号关联到您的Google Cloud项目

前期准备:Google Play Console和Google Cloud访问权限。

请按照以下步骤将您的Google Play开发者账号关联到您的Google Cloud项目:

  1. 从Google Play Console进入您的Google Play开发者账号。
  2. 将该账号关联到您的Google Cloud项目。详细指南请参考Google提供的说明文档。
  3. 启用Google Play Developer API。详细指南请参考Google提供的说明文档。

1.2.在Google Cloud Platform中配置您的服务账户

前提条件:访问Google Cloud Platform。

要配置您的服务帐户,请按照以下步骤操作:

  1. 创建或找到服务账号:
    1. 在Google Cloud Platform中,前往Service accounts(服务账号)部分,点击“Create Service Account(创建服务账号)”。

    2. 填写服务账号的详细信息。

    3. 复制电子邮件地址。

    4. 点击Create and continue(创建并继续),进入下一步。

    5. 在Grant this service account access to the project(为该服务账号开放项目权限)部分的“Select a role”(选择角色)字段中,选择Pub/Sub subscriber。

    6. 点击Continue > Done,完成服务账号的创建。

  2. 下载服务账号私钥:
    1. 在Google Cloud Platform中,进入Service accounts(服务账号)部分,从列表中找到你刚创建的服务账号,点击“更多操作”图标。
    2. 点击“管理私钥(Manage keys)”。

    3. 点击 添加私钥 > 创建新私钥。

    4. 在创建私钥窗口中,

      在
    5. 私钥类型下,选择JSON,然后单击创建。点击Create,下载JSON格式的密钥文件。

    6. 保存JSON私钥文件,稍后您需要将该文件将上传至AppsFlyer。 请注意:请务必保存密钥,关闭窗口后将无法再次获取。如未保存,您需要重新创建新密钥。

1.3.在Google Play Console中设置API访问权限。

前提条件:Google Play Console访问权限。

注意:服务账号的证书和权限设置完毕后,可能需要等待一段时间(有时可达24小时),然后才能正常使用。在此期间你可能会在后续步骤中遇到报错。

在Google Play Console中设置API访问权限的操作如下:

  1. 在Google Play Console中,进入Users and permissions(用户和权限),找到您创建的服务账号并点击Invite new users(邀请新用户)。

  2. 在Email address(邮箱地址)字段中,填写您在第1.2.1.3步创建服务账号时复制的邮箱地址。

  3. 在Permissions(权限)部分,进入Account permissions(账号权限)选项卡,然后同时勾选以下两项:

    • View financial data, orders, and cancellation survey responses(查看财务数据、订单和取消订阅问卷答复)
    • Manage orders and subscriptions(管理订单和订阅)
  4. 在App permissions(应用权限)标签页中,点击Add app(添加应用),然后选择应用。如有需要可添加多个应用。

  5. 点击Invite user(邀请用户)。

  6. 在确认弹出窗口中,点击Send invite(发送邀请)。

1.4.将服务账户私钥上传到AppsFlyer。

上传并验证您在步骤 1.2中下载的 Google JSON 密钥。

前提条件:具备AppsFlyer管理员权限。

要将账户私钥上传到 AppsFlyer,请按照以下步骤操作:

  1. 启用 ROI360 商店收入。 
  2. 在服务账户私钥和权限步骤中,在上传Google JSON密钥字段里,单击upload-2.png 上传图标。
  3. 上传您在步骤 1.2中下载的JSON文件。
  4. 点击验证密钥。 请注意:
    • 设置服务账号凭据和权限后,最多可能需要 24 小时才能生效。在此期间进行密钥验证或验证测试时可能会出现错误。
    • 如需绕过最长 24 小时的等待时间,可在Google Play Console中打开任意应用,进入Monetize > Products > Subscriptions/In-app products,并对某项内容进行修改(如编辑商品描述并保存)。该操作将立即刷新账号凭据和权限。修改完成后可撤销操作。
  5. 单击保存并继续。

步骤2(iOS):设置App Store服务器通知

在步骤2中,设置通过AppsFlyer接收App Store通知的方式。

  • 如果您已在 App Store Connect 中配置了 App Store 服务器通知端点(例如,您自己的后端或另一项服务),请在选项 1(推荐)和选项 2 之间进行选择。
  • 如果您尚未在 App Store Connect 中配置端点,请选择选项 1。

选项 1(推荐)——将 AppsFlyer 设为主要终点

将现有的 App Store Connect 通知 URL 替换为 AppsFlyer 端点,并在 AppsFlyer 中将您之前的端点添加为转发目标。您当前的订阅逻辑和工作流保持不变,并将继续按预期运行。

此选项的通知流程如下:

  1. App Store Connect 会向 AppsFlyer 发送通知
  2. AppsFlyer 会为 ROI360 处理这些数据
  3. AppsFlyer 会将所有通知实时转发至您的现有端点

要使用此选项,请完成步骤 2.1、2.2 和 2.4。

选项 2 - 将您的终点设为主要终点

如果您希望保留现有端点作为主要接收端,请将服务器配置为将 App Store 服务器通知转发至 AppsFlyer。

若要使用此选项,请跳过步骤 2.1 和 2.2,并完成步骤 2.3 和 2.4

2.1 复制AppsFlyer服务器通知端点

要复制AppsFlyer服务器通知端点,请按照以下步骤操作:

  1. 在AppsFlyer中,在App Store服务器通知步骤,复制AppsFlyer服务器通知端点。
  2. 如果您之前已拥有另一个 App Store 服务器通知端点,并希望 AppsFlyer 将通知转发至该端点,请选择“将通知副本转发至您的服务器”(仅适用于选项 1)。
  3. 在弹出的文本框中输入您的通知转发端点。

直接将通知发送到AppsFlyer:

若要将通知直接发送至 AppsFlyer,请将 AppsFlyer 设置为 App Store 服务器通知的主要端点。

  1. 在App Store Connect中,进入App Information部分,向下滚动至App Store Server Notifications,在Production Server URL右侧点击Edit。

  2. 粘贴从AppsFlyer复制的AppsFlyer服务器通知端点,选择版本2通知,然后点击 保存。 注意:系统已不再支持版本1通知。如果 Apple Store Connect 中未显示“通知版本”选择器,则说明您已使用第 2 版。

  3. 进入App Information部分,向下滚动至App Store Server Notifications,在Sandbox Server URL右侧点击Edit。

  4. 粘贴从AppsFlyer复制的AppsFlyer服务器通知端点,选择版本2通知,然后点击 保存。注意:系统已不再支持版本1通知。如果 Apple Store Connect 中未显示“通知版本”选择器,则说明您已使用第 2 版。

2.3 [可选]将通知从您的端点转发到 AppsFlyer

仅当您希望将端点保留为 App Store 服务器通知的主要接收端(而非直接将通知发送至 AppsFlyer)时,才需执行此步骤。

此选项并非推荐的配置方案,且需要进行后端实现。如果您已在上述第 2.2 步中将 AppsFlyer 配置为主端点,请跳过此步骤。

要将服务器通知从您的端点转发到AppsFlyer,请按照以下步骤操作:

  1. 在App Store Connect中,进入App Information部分,向下滚动至App Store Server Notifications,在Production Server URL右侧点击Edit。

  2. 粘贴您的服务器端点URL。

  3. 选择版本2通知。请注意: 系统已不再支持版本1通知。如果 Apple Store Connect 中未显示“通知版本”选择器,则说明您已使用第 2 版。
  4. 点击Save保存。
  5. 同样在App Store Connect的App Information部分,找到Sandbox Server URL,点击Edit。

  6. 粘贴您的服务器端点URL。

  7. 选择版本2通知。请注意: 系统已不再支持版本1通知。
  8. 点击Save保存。
  9. 请配置您的后端,将 Apple 服务器通知转发至 AppsFlyer 通知端点 URL。请求必须与从 Apple 接收到的 App Store 有效负载完全一致,请参阅 Apple 的格式要求。

2.4 测试服务器通知集成

若要确认 AppsFlyer 是否正确接收了 App Store 服务器通知,或者如果您最近配置了端点但尚未收到任何服务器通知:

  1. 在 AppsFlyer 中,进入“App Store 服务器通知”步骤。
  2. 点击“测试集成”。AppsFlyer 会向 Apple 发送一条测试通知请求,并检查过去 7 天内是否收到过 Apple 发来的有效通知,随后显示以下其中一项:

    • 确认是否已收到有效通知。
    • 一条状态消息,表示未找到任何通知。

     注意

    Apple 可能需要几秒钟才能发送测试消息。

    • 如果状态仍显示为无效,请稍等片刻后再试一次。
    • 测试成功后,或者当您准备继续时,请点击“保存并下一步”。

步骤 2(Android):设置Google Play服务器通知

要接收来自Google Play 的应用内购买和订阅收入数据,可选择以下两种方式之一:

前提条件:Google Play Console以及AppsFlyer后台访问权限。

2.1将Google Play通知直接发送至AppsFlyer的操作如下:

  1. 在 AppsFlyer 中,在第 2 步“设置 Google Play 服务器通知”中,请选择“允许 AppsFlyer 主题直接从 Google 接收 RTDN 消息”。
  2. 将AppsFlyer topic复制到剪贴板。
  3. 在Google Play Console > 主页中,选择查看您的应用程序。打开面板。

  4. 前往Monetize with Play > Monetization setup,在Google Play Billing部分,确认已勾选Enable real-time notification(启用实时通知)

  5. 在Topic name(主题名称)字段中,粘贴您复制的AppsFlyer topic地址。

  6. 在Notification content部分选择Subscriptions, voided purchases, and all one-time products(订阅、作废的购买交易以及所有一次性付费产品)。

  7. 点击Save Changes,保存更改。设置可能需要一些时间才能生效(最长可达24小时),请等待设置生效后再进行测试。

1.6. 【或者】将Google Play的通知转发给AppsFlyer

注意:如果你已选择推荐方式(即由Google Play直接将通知发送至AppsFlyer)来接收应用内购买和订阅收入数据,请跳过此步骤。此步骤仅适用于未使用推荐方法的情况。如果你已完成推荐方式中的相关设置,即创建了由AppsFlyer直接接收Google Play RTDN通知的topic,请跳过此步骤。

如需将AppsFlyer设置为现有Pub/Sub topic的订阅者,请按照以下说明操作。

前提条件:Google Cloud Platform及AppsFlyer后台访问权限。

【或者】1.6:将Google Play的通知转发给AppsFlyer

  1. 在AppsFlyer平台中,从侧边菜单选择设置 > 收入设置。
  2. 选择您的应用,
  3. 在购买与订阅标签中,选择将您的RTDN主题消息转发到AppsFlyer。
  4. 将端点URL复制到剪贴板。
  5. 进入Google Cloud Platform,在相关项目下搜索Pub/Sub。

  6. 进入Pub/Sub的Topics部分,确认您有一个专用于订阅的pub/sub topic。

  7. 进入Pub/Sub的Subscriptions部分,点击Create subscription。

  8. 输入Subscription ID。

  9. 从下拉列表中选择相关订阅的pub/sub主题。

  10. 在Delivery type(发送方式)部分中,选择Push(推送)。

  11. 粘贴从AppsFlyer复制的端点 URL。

  12. 在Expiry period(期限)部分,选择Never expire(永不过期)。

  13. 点击Create,

  14. 进入Subscriptions部分,点击您选择的Topic name(主题名称)。

  15. 将主题名称复制到剪贴板。

  16. 从Google Play Console进入Monetization setup> Monetization setup.,在Google Play Billing部分中,将前一步中复制的topic名称粘贴到Topic name字段中。

  17. 在Notification content部分选择Subscriptions, voided purchases, and all one-time products(订阅、作废的购买交易以及所有一次性付费产品)。

  18. 点击保存更改。设置可能需要一些时间才能生效(最长可达24小时),请等待设置生效后再进行测试。

2.3 从 Google Play 控制台发送测试通知

要验证 AppsFlyer 是否正确接收了 Google Play 实时开发者通知 (RTDN),请从 Google Play 控制台发送一条测试通知:

  1. 点击“发送测试通知”。这将向为 AppsFlyer 配置的 Pub/Sub 主题发送一条测试 RTDN 消息。

    altimage (9).png
  2. 在“Google Play 计费”下,找到“主题名称”部分。
  3. 在左侧菜单中,导航至“通过 Play 变现”→“变现设置”。
  4. 前往 Google Play 控制台。

2.4 在 AppsFlyer 中确认通知送达情况

  1. 测试成功后,或者当您准备继续时,请点击“保存并下一步”。
  2. 结果:AppsFlyer 会显示过去 7 天内是否收到过任何通知。
    • 如果操作成功,界面将显示最近一条通知的日期和时间。
    • 如果未收到任何通知,界面将显示过去7天内未发现任何通知。
    • 如果未显示状态,请检查您的 Pub/Sub 配置,然后重新发送测试通知。
  3. 在“Google Play 服务器通知”步骤中,点击“测试集成”。

第3步:部署SDK connector

在此步骤中,您需要请开发人员对AppsFlyer Purchase SDK connector进行对接,并配置沙盒环境以进行测试。

部署SDK connector的操作步骤如下:

  1. 在“实施 SDK 连接器”步骤中,复制仪表盘中显示的预设消息。
  2. 将其发送给您的开发人员。包括:
    • 应用名称和App ID
    • SDK对接指南链接。
    • 沙盒环境配置说明 (sandbox = true)
    • 测试步骤(使用TestFlight)

此处包含了开发人员进行对接和测试所需的全部信息。

 注意

该连接器使用自动事务检测。作为另一种方法,您可以调用 SDK 方法validateAndLog来手动记录每笔交易。此方法不支持连接器提供的所有功能。有关这两种 SDK 集成选项的详细信息,请参阅 DevHub 文档。

第4步:验证 SDK 的实现

建议在沙盒环境中测试IAP和订阅收入对接,确保SDK connector已正确接入到相关应用中,且服务器通知的配置正确无误,AppsFlyer可正常收到通知。

测试 SDK 实现

若要查看 AppsFlyer 在过去 7 天内是否已收到来自您应用的有效购买和订阅事件数据包,请按照以下步骤操作:

  1. 在“验证 SDK 实现”步骤中,点击“测试 SDK 实现”。
  2. 查看结果,包括 AppsFlyer 接收到的最新有效负载的时间戳。

     注意

    此测试仅用于确认请求已成功发送至 AppsFlyer,并不验证数据的完整性或准确性。

  3. 要全面验证该实现,请继续执行以下测试步骤。

沙盒事件和参数

  • SDK 连接器仅针对初始沙箱事务生成事件:
    • 应用内购买
    • 订阅
  • AppsFlyer 仅在原始交易的 SDK 事件已被记录的情况下,才会处理服务器通知。
    • In-App Purchase key
    • 订阅 S2S: af_ars_sandbox_s2s
  • 如果 SDK 从未记录原始交易,则不会创建 S2S 事件。

iOS 注意事项

  • 如果af_purchase_sandbox_sdk 包含 af_sandbox_revenue,则它映射到一个生产规则 af_purchase。
  • af_purchase_free如果没有收入,则映射到生产环节。

关于 Android 的注意事项

  • 许可证测试者的购买操作始终会触发沙盒事件,即使 SDK 中未配置沙盒模式。

测试事件的必填参数

请确保每个沙盒购买事件包含:

  • 收入 = 0(以免影响实际报表)。
  • af_sandbox_revenue = 实际产品价格(以便正确核算收入)。
  • True请false返回并核对商店密钥。
  • af_validation_typeaf_validation_type

测试应用内购买(IAP)和订阅收入数据

前提条件:

  • 对于iOS应用,请确保App Store connect中“App Store Server Notifications”(应用商店服务器通知)部分下的Sandbox Server URL(沙盒服务器地址)配置为AppsFlyer端点。

测试应用内购买和订阅收入:

  1. 请让您的开发人员按照安卓、 iOS和Unity的专用说明在SDK connector中配置沙盒环境。
  2. 在 Google Play 中使用“许可证测试工具”进行试购或订阅。对于 iOS 设备,请使用 TestFlight。请注意:每台设备仅可对订阅产品进行一次测试。实际上,一台设备无法对同一项订阅进行多次测试购买。后续尝试将不予记录。
  3. 使用Google Play中的License Tester或iOS中的TestFlight,进行测试退款、订阅续订或取消订阅的操作。请注意:如果您正在测试订阅类产品,请预留足够的时间,以便 AppsFlyer 接收来自应用商店的服务器通知——该通知通常会在首次购买完成后几分钟内发送。
  4. 在“Verify SDK 连接器实现”步骤下,点击“测试 SDK 实现”。该指标显示过去 7 天内是否成功接收到了来自 Purchase Connector 的任何 SDK 有效载荷。
  5. 请确保测试事件以以下其中一种方式显示:

  6. 请确认该事件是否显示在 AppsFlyer 活动仪表盘中。在 AppsFlyer 中,进入“分析”>“活动”,在“活动趋势”图表中,打开“应用内事件”选项卡,然后选择要测试的事件。自动续订的订阅购买称为 af_ars_s2s_sandbox.该事件具有以下特征:
    • 收入值为0(避免AppsFlyer的实际报告数据受到扭曲)。
    • 一个af_sandbox_revenue包含所购产品收入值的参数,以确保报告的收入准确无误。
       

第5步:验证并更新设置

完成上述设置的配置并保存最后一步后,系统将自动跳转至当前配置视图,您可以在该视图中验证或更新以下设置:

  1. 请确保“通过 App Store 验证购买”开关已开启。
  2. 在购买中检查以下选项:
    • 防止重复计算,确保数据准确性:避免记录已被上报的交易。
    • 自动衡量退款、取消和负收入:对退款相关事件进行统计,并将其记录为负收入。
    • 消除家庭共享带来的误差:避免因家庭共享导致收入被重复计算。这些事件会被标记为并报告为零收入。
  3. 请确保“为自动续订订阅测量并计入收入”开关已开启:
  4. 以下设置的状态:
    • App Store 密钥设置
    • 服务器通知端点的设置
    • 实施并测试 SDK 连接器

第6步:发布已对接SDK connector的应用版本

完成前述所有配置并将AppsFlyer的purchase SDK connector集成至应用后,请通知开发人员发布集成后的新版本应用。

但在发布前,请确保以下事项已处理:

  • 您在AppsFlyer中配置的验证规则不会拦截您想要记录的IAP或订阅事件。
  • 您的开发人员已将所有沙盒标签设置为“false”。

一旦包含SDK connector的应用版本发布,相关的应用内购买和订阅事件将开始生成,并出现在所有AppsFlyer面板中,以及汇总数据和原始数据报告(包括Revenue ETL)中。

注意: 仅当用户更新至包含SDK connector的应用版本后,事件才会开始生成。因此,在更新后的应用版本被全面采用之前,预计应用的收入数据与商店数据之间会出现差异。

切换至 ROI360 店铺收入(来自收据验证)

如果您已完成“收据验证”的入门设置,但希望启用 ROI360 Store 收入产品,请执行以下操作:

  1. 在AppsFlyer中,从左侧菜单进入settings-roi.png设置,在ROI360下选择收入设置。
  2. 打开购买与订阅标签页。出现一条横幅提示,显示ROI360已可用但尚未激活。
  3. 点击“查看产品对比”,了解相关优势,包括退款归因、净收入报告以及完整的订阅生命周期衡量。
  4. 点击“激活 ROI360”。
  5. 执行“启用 App Store 服务器通知”步骤。如需了解更多信息,请参阅“设置 App Store 服务器通知”或“设置 Google Play 服务器通知”。
  6. 在“购买与订阅”部分,请确认“产品类型”现已设置为 ROI360。
  7. 请检查您当前的 SDK 配置,以确保其能够支持您所需的 ROI360 Store 收入功能。

 注意

ROI360 Store 的收入支持两种集成方式:购买 SDK 连接器,并进行验证和日志记录。在这两者中,我们建议使用“Purchase SDK Connector”,以便享受以下优势:

  • 自动交易检测
  • 现有订阅用户(整合前已订阅的用户)的收入核算
  • 支持订阅价格变更,确保在价格更新时能够准确报告收入。

如果您不需要这些功能,可以继续使用“验证和日志记录”集成。

如何查看您的 SDK 集成方式

要确认您的应用是否使用“购买 SDK 连接器”或“验证和记录”功能:

  1. 转到“集成 SDK 连接器”步骤。
  2. 点击“测试 SDK 集成”。您将看到过去 7 天内 AppsFlyer 接收到的最新 SDK 数据包的时间,以及该数据包是来自“购买 SDK 连接器”还是“验证和日志记录”。