概要:了解如何通过收据验证对应用内购买和订阅收入进行衡量,并与应用商店校验,从而确保收入衡量的准确性。
概览
注意
有关收据验证的更多信息,包括其工作原理以及如何在 AppsFlyer 中启用它,请参见 关于收据验证。
要设置收据验证,请按顺序完成以下步骤:
- 设置商店凭据(iOS 和 Android)
- iOS在 AppsFlyer 中配置 App Store Connect 密钥(应用内购买密钥、密钥 ID 和发行者 ID)以启用收据验证。
- 安卓配置 Google Cloud 服务帐户,在 Google Play 控制台中设置所需权限,并将服务帐户 JSON 密钥上传到 AppsFlyer。
-
实现 validateAndLog SDK API:准备开发人员集成 AppsFlyer
validateAndLogSDK API,并配置沙盒环境以进行测试。 - 测试 validateAndLog SDK API 实现:在 iOS 和 Android 上执行沙盒测试购买和订阅,以验证收据验证事件是否生成并被 AppsFlyer 正确记录。
- 验证并更新设置:确认产品类型设置为收据验证,并检查商店密钥和 SDK 集成状态,以确保准确、持续的收入测量。
-
发布带有 validateAndLog SDK API 的应用版本:发布集成了
validateAndLogSDK API 的更新应用版本,确保沙盒标志已禁用,并且所需的应用内事件未被验证规则阻止。
步骤 1(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两个标签页。
- 您的iOS应用需要使用StoreKit v1或v2,StoreKit可提供处理应用内购买与订阅的基础框架。
1.1 生成App Store Connect密钥
要设置iOS凭据, 请按照以下步骤操作:
-
在App Store Connect中,进入用户和访问权限页面
-
前往用户和访问权限> 对接,在密钥列表中,选择应用内购买。
-
点击+生成一个新的应用内购买密钥。
- 输入您的API密钥名称。
- 点击生成。
- 在生成的密钥旁边,点击下载应用内购买密钥。 注意:该密钥只能下载一次,请妥善保存。
-
在App Store Connect中,复制生成的密钥的Key ID,并将其粘贴到AppsFlyer购买和订阅设置中的Key ID字段里。
-
复制发行者 ID。 注意: 如果页面顶部未显示Issuer ID,请创建一个App Store Connect API私钥(具有任意权限级别)。之后,Issuer ID将出现在应用内购买私钥的页面顶部。
步骤 2(Android):设置服务账户密钥和权限
在步骤 1 中,从 Google Play 和 Google Cloud 获取以下凭据,并在 AppsFlyer 平台的 收入设置 页面中输入它们。
前期准备 :
- 设置应用内购买和订阅收入衡量时,您需要在Google Cloud Platform、Google Play Console以及AppsFlyer界面中分别完成相关操作。建议您在设置过程中同时打开以上三个标签页。
- 在AppsFlyer后台进行设置需具备管理员权限。
1.1 将您的Google Play开发者账号关联到您的Google Cloud项目
前提条件:Google Play Console和Google Cloud访问权限。
请按照以下步骤将您的Google Play开发者账号关联到您的Google Cloud项目:
- 从Google Play Console进入您的Google Play开发者账号。
- 将该账号关联到您的Google Cloud项目。详细指南请参考Google提供的说明文档。
-
启用Google Play Developer API。详细指南请参考Google提供的说明文档。
在Google Cloud Platform中配置您的服务账户
前提条件:访问Google Cloud Platform。
要配置您的服务帐户,请按照以下步骤操作:
-
创建或找到服务账号:
-
下载服务账号私钥:
- 在Google Cloud Platform中,进入Service accounts(服务账号)部分,从列表中找到你刚创建的服务账号,点击“更多操作”图标。
- 点击“管理私钥(Manage keys)”。
-
点击 添加私钥 > 创建新私钥。
- 在创建私钥窗口中,
-
在私钥类型下,选择JSON,
然后单击创建。 点击Create,下载JSON格式的密钥文件。
- 保存 JSON 密钥文件,稍后您将上传到 AppsFlyer。 请注意:请务必保存密钥,关闭窗口后将无法再次获取。如果您不保存它,您必须创建一个全新的密钥。
在Google Play Console中设置API访问权限。
前提条件:Google Play Console访问权限。
请注意:服务账号的证书和权限设置完毕后,可能需要等待一段时间(最长可达24小时),然后才能正常使用。在此期间你可能会在后续步骤中遇到报错。
在Google Play Console中设置API访问权限的操作如下:
-
在Google Play Console中,进入Users and permissions(用户和权限),找到您创建的服务账号并点击Invite new users(邀请新用户)。
-
在Email address(邮箱地址)字段中,填写您在第1.2.1.3步创建服务账号时复制的邮箱地址。
-
在Permissions(权限)部分,进入Account permissions(账号权限)选项卡,然后同时勾选以下两项:
- View financial data, orders, and cancellation survey responses(查看财务数据、订单和取消订阅问卷答复)
- Manage orders and subscriptions(管理订单和订阅)
-
在App permissions(应用权限)标签页中,点击Add app(添加应用),然后选择应用。如有需要可添加多个应用。
-
点击Invite user(邀请用户)。
-
在确认弹出窗口中,点击Send invite(发送邀请)。
将服务账户私钥上传到AppsFlyer。
上传并验证您在步骤 1.2中下载的 Google JSON 密钥。
前提条件:具备AppsFlyer管理员权限。
要将账户私钥上传到 AppsFlyer,请按照以下步骤操作:
- 启用收据验证
- 在服务账户密钥和权限步骤中,在上传Google JSON密钥字段中,点击
上传。
- 上传您在步骤 1.2中下载的JSON文件。
-
- 设置服务账号凭据和权限后,最多可能需要 24 小时才能生效。在此期间进行密钥验证或验证测试时可能会出现错误。
- 如需绕过最长 24 小时的等待时间,可在Google Play Console中打开任意应用,进入Monetize > Products > Subscriptions/In-app products,并对某项内容进行修改(如编辑商品描述并保存)。这通常会立即更新账户凭据和权限。修改完成后可撤销操作。
- 点击Next。SDK实现步骤已打开。
第2步:2.实施SDK V6
在此步骤中,您准备开发人员集成SDK validateAndLog API,并设置一个用于测试的沙盒环境。支持最新validateAndLog API的最低SDK版本为Android的6.17.5和iOS的6.17.8。
要实现validateAndLog SDK API,请按照以下步骤操作:
- 在SDK实现步骤中,复制仪表板中显示的预写消息。
-
将其发送给您的开发人员。它包括:
- 应用名称和App ID
- SDK对接指南链接。
- 沙盒环境配置说明 (
sandbox = true) - 测试步骤(使用TestFlight)
此处包含了开发人员进行对接和测试所需的全部信息。
- 点击Next。验证SDK实现步骤已打开。
第3步:验证SDK实现
建议在沙盒环境中测试IAP和订阅收入对接,确保SDK connector已正确接入到相关应用中,且服务器通知的配置正确无误,AppsFlyer可正常收到通知。
测试SDK实现
要检查AppsFlyer在过去7天内是否收到了来自您应用程序的有效validateAndLog有效载荷,请执行以下步骤:
- 在验证SDK实现步骤中,点击测试SDK实现。
- 查看结果,包括AppsFlyer收到的最新有效载荷的时间戳。请注意,此检查仅确认请求已到达AppsFlyer,并不验证数据的完整性或正确性。
- 要完全验证实现,请继续进行以下测试步骤。
沙盒环境的注意事项
在沙盒环境中:
- 只有初始购买事件会导致validateAndLog SDK API生成一个由AppsFlyer记录的事件。应用内购买事件称为
af_purchase_sandbox_sdk。订阅事件称为af_ars_sandbox_sdk.。 - 沙盒事件的收入为0。
- 对于安卓应用,由已获许可的测试人员(Licensed Tester)开展的测试总是会触发沙盒事件,无论SDK中是否配置了沙盒环境。
测试应用内购买(IAP)和订阅收入数据
测试应用内购买和订阅收入:
- 告诉您的开发人员按照他们的说明配置validateAndLog SDK API的沙盒环境。
- 使用Google Play的License Tester或iOS的TestFlight进行测试购买或订阅启动操作。
-
查看测试事件以以下方式显示:
- 在 实时事件查看器 中查看事件。
- 在 我的仪表板 - 活动视图 中查看事件数据。
-
查找以下测试事件:
- 购买事件的
af_purchase_sandbox_sdk。 - 订阅事件的
af_ars_sandbox_sdk。
- 购买事件的
-
确保测试事件包括以下内容:
- 收入值为0(避免AppsFlyer的实际报告数据受到扭曲)。
- 一个
af_sandbox_revenue参数,包含所购产品的收入值,确保报告的收入正确。 - 一个
af_validated参数是true。如果af_validated是false- 返回到上面的第 2 步并验证从商店提供的密钥。 - 一个
af_validation_type参数是receipt_validation。
第4步:验证并更新设置。
完成上述设置配置并保存后,您将被重定向到活动配置视图,在此您可以验证或更新以下设置:
- 验证 产品类型 是否为 收据验证。
- 确保 与 App Store 验证购买 已开启。
-
验证或更新以下设置:
- App Store 密钥 设置。
- SDK 集成 设置。
第5步:发布带有 validateAndLog SDK API 的应用版本。
在前面的步骤都配置完毕并将 AppsFlyer validateAndLog SDK API 集成到您的应用后,告诉您的开发人员发布集成了 validateAndLog SDK API 的应用版本。
在开发人员发布新应用版本之前,请确保:
- 您在AppsFlyer中配置的验证规则不会拦截您想要记录的IAP或订阅事件。
- 您的开发人员已将所有沙盒标志设置为
false。
一旦包含validateAndLog SDK API的应用程序发布,应用内购买和订阅事件将生成并在所有AppsFlyer仪表板上可用,同时也会出现在汇总和原始数据报告中。
仅为已更新到包含validateAndLog SDK API版本的用户生成事件。因此,在新版应用全面覆盖前,应用中的收入数据与商店端数据之间可能会存在差异。