基础SDK对接指南

概要:本文将指导您如何与移动端或CTV端开发人员合作,在安卓或iOS应用中接入并安装SDK。基础的对接工作完成后,您就可以对该应用的激活进行归因,并衡量其应用内事件。

在相关应用中添加dev key

这是AppsFlyer对您的帐户进行唯一性标识的方式。dev key是对接SDK时的必填字段,因为SDK需要通过dev key才能安全地发送/拉取属于您账户的数据。您的开发人员需要在相关应用中安装并对接SDK,然后嵌入dev key。

获取dev key

在开发人员安装并接入SDK之前,您必须先获取dev key,

  1. 从AppsFlyer后台的侧边栏中选择配置 > 应用配置
  2. 复制dev key,并发送给您的移动端开发人员。

嵌入dev key

SDK的安装对接指南发送给移动端开发人员。

SDK初始化节点

规划AppsFlyer SDK对接时,首先需要明确SDK在应用打开流程中的初始化节点。

主流的做法是让SDK在应用打开后尽快开始发送数据,这能确保SDK捕捉到激活以及首个session中所有的应用内事件。

但是为了确保GDPR和CCPA等隐私保护条例的合规性,广告主可能需要让SDK先等待用户同意共享信息,然后才向AppsFlyer发送数据。

安卓原生 iOS原生 Unity React Native

在安卓端原生环境中启动SDK

选择启动SDK的类(Class)

您可以选择在全局Application类或在Activity类中启动SDK:

  • 如果在全局Application类中启动SDK:一般情况下,推荐在全局Application类/子类中启动SDK,因为Application类会在应用界面打开之前加载并初始化。这可以确保SDK在任何场景中都能启动,包括深度链接。
  • Activity类中启动SDK(延迟启动):适用于需要用户授权共享数据的场景。这是因为请求用户授权需要用到Activity类中的用户界面(UI)。

安卓端开发人员相关说明

  • 开发人员需要了解以下问题的最终决定:
    • SDK在哪个类中启动:Application还是Activity
    • 使用哪一种Opt-in/Opt-out场景?

在Unity中启动SDK

请将这篇开发者文档发送给您的开发人员,其中说明了SDK的启动方式。

在React Native中启动SDK

请将这篇开发者文档发送给您的开发人员,其中说明了SDK的启动方式。

选择您的隐私保护策略

选择您保护用户隐私的方式。可选方案包括在应用激活时停用SDK、禁止第三方共享数据、对用户数据进行匿名化处理或禁用某些标识符。

如需进一步了解各种可用的Opt-out场景,请参考Opt-in和Opt-out场景说明

归因

SDK会收集标识符(identifier),用于归因。为确保激活能够得到准确的记录和归因,请按照以下指南进行操作。

所有平台

激活的唯一标识符

用户每次安装一个应用后,AF都会为其匹配一个专属的AppsFlyer ID。这个环节无需市场人员进行任何操作。

您可以使用该标识符来完成下列事项:

将BI系统中的唯一标识符接入AppsFlyer系统

在AppsFlyer SDK中设置CUID(客户用户ID)后,您就可以对BI系统中的专属ID、AppsFlyer ID和其他ID进行交叉对照。您可以在AppsFlyer的原始数据报告中查看CUID,还能在回传API中使用该ID与您的内部ID进行交叉索引。

如需进一步了解CUID,请参阅此文档

仅适用于安卓

以下章节解释了对来自Google Play或第三方应用商店的流量进行归因时需要考虑到哪些因素。

对来自Google Play的流量进行归因

GOOGLE PLAY INSTALL REFERRER

Google Play Install Referrer API改善了归因准确率,保护广告主免受假量侵害,而且能以安全的方式让广告主从Google Play获取安装来源数据(如应用首次激活时的版本信息)。

建议您将Google Play Install Referrer API部署指南发送给开发人员。

GAID

从SDK V4.8.0开始,AppsFlyer会自动收集这个设备标识符。

对第三方应用商店中的应用进行归因

您可以通过AppsFlyer对来自第三方应用商店的激活进行归因,这些商店包括亚马逊、Opera,、GetJar、百度和华为。这样,您就可以在没有Google Play商店的市场中推广您的应用,并触达更多用户。

AppsFlyer支持第三方应用商店的归因,具体如下:

  • IMEI或Android ID:SDK不会自动收集IMEI或Android ID。如果您需要收集这些标识符(如在中国国内市场推广应用时),可以让开发人员通过以下任意一种方式来实现这一功能:
    • 手动收集:通过setImeiDatasetAndroidIdData API(详见下方窗口中列出的参考函数信息),让应用将IMEI或Android ID发送给SDK,然后SDK再将数据发送到AppsFlyer服务器。
      安卓端原生Unity

      安卓SDK参考信息:

  • OAID:您可通过该ID对来自第三方安卓应用商店的激活进行归因。详情请见OAID使用指南
  • Install referrer(激活来源标识):AF的SDK支持从Samsung Gallery和华为应用市场拉取referrer数据。

仅适用于iOS

以下几个章节中包含了适用于iOS 14+设备的重要信息。

适用于ATT框架的配置

背景介绍

从iOS 14.5开始,IDFA的收集需要得到用户的授权。也就是说IDFA的读取权限是由App Tracking Transparency(应用追踪透明度,简称ATT)框架所控制的。在iOS 14+设备上,SDK需要通过ATT框架来获取设备IDFA的读取权限。有关ATT的简介请参阅ATT原则

iOS端原生Unity

详见开发者资源中心(Dev Hub)中的ATT部署指南

若使用IDFA进行归因,一定要在应用首次启动时发送IDFA。为此,AppsFlyer SDK专门提供了waitForATTUserAuthorization方法以确保相关数据的发送。

waitForATTUserAuthorization功能简介

 注意事项!

如果您不打算触发ATT弹窗,请不要调用waitForATTUserAuthorization

您可以通过waitForATTUserAuthorization来设定让SDK延迟多久再将数据发送给AppsFlyer服务器,并在此期间等待ATT授权状态。

当终端用户打开应用时,ATT状态为notDetermined。在waitForATTUserAuthorization的计时器走完之前,SDK会将激活和后续的应用内事件组成队列保存在缓存中,这与离线事件的记录方式相似:

  • 如果用户在ATT弹窗中选择了同意(IDFA收集):
    • SDK将IDFA添加到缓存的事件中。
    • SDK启动,发送带有IDFA的缓存事件(无需等到timeout结束)
  • 如果用户在ATT弹窗中选择拒绝授权:SDK启动后发送不带有IDFA的缓存事件(无需等到计时器走完)
  • 如果计时器走完后ATT状态仍然是notDetermined:SDK启动后发送不带有IDFA的缓存事件。

注意事项

  • 如果在没有设置waitForATTUserAuthorization的情况下调用requestTrackingAuthorization,那么iOS 14+设备上的应用启动和事件在回传时不会带有IDFA。
  • 如果用户在timeout期间将应用切换至后台:
    • timeout计时器暂停,直到该应用重新返回到前台运行。
    • 事件被保存在缓存中。
  • 如果用户在timeout期间关闭应用,系统自动退出:
    • 计时器在下次应用启动时重新开始计时。
    • 缓存的事件会丢失。

定制ATT授权弹窗的文案

您可以在ATT弹窗中使用定制的文案。清晰地说明收集设备ID的意义能够提升用户的同意率。

编写弹窗文案时请注意以下事项:

  • 以最清晰有效的方式向用户解释您的应用为什么要请求授权。
  • 告诉用户他们的数据会以何种方式被使用。详情请见用户隐私和数据使用

弹窗文案完成后,请将执行指南与文案一并发送给开发人员。

iOS端原生Unity

详见开发者资源中心(Dev Hub)中的ATT授权弹窗定制指南

查看ATT弹窗文案示例。

适用于SKAN归因的配置

 

 注意

要全面支持SKAN归因,您需要先升级到iOS SDK V6.2.3以上版本。

SKAN是iOS中用来验证非自然激活的一种方式,其中的应用激活验证流程涉及到流量方应用(source app)和广告主应用(advertised app)。

在广告平台上投放的广告会展示在流量方应用中。广告展示的配置并不在AppsFlyer SDK可控制的范围内。如需进行相关配置,请按照Apple的相关说明进行操作。

对于广告主应用(即配有AppsFlyer SDK的应用),AppsFlyer的SKAN解决方案会通过SKAN来实现归因回传,同时在确保用户隐私的前提下对数据进行收集、转换和汇总。用户首次启动应用时,AppsFlyer平台会基于广告主侧所设定的配置来指导SDK如何设置SKAN转化值。

请按以下步骤启用SKAN解决方案:

  • 首先,市场人员需要在AppsFlyer后台配置SKAN衡量方案。开发人员无需进行任何操作。
  • AppsFlyer SDK 会自动调用必要的SKAN API。
  • 通过AppsFlyer进行SKAN归因时,请务必关闭其他SDK中的SKAN调用。
  • 开发人员和市场人员都无需在App Store中再完成其他操作或注册流程。

如需关闭SKAN归因,请让您的开发人员在SDK中将其禁用。

iOS端原生UnityReact Native

如需禁用SKAN归因,请使用disableSKAdNetwork

记录应用内事件

应用内事件(简称IAE)能让您深入了解用户在应用中的行为。记录应用内事件能帮助您衡量ROI(投资回报率)和LTV(生命周期价值)等一系列KPI,因此建议您认真仔细地去定义需要记录的事件。

确定了您想要衡量的应用内事件后,请将这些事件名称、事件参数以及执行指南的链接一并发送给您的开发人员。

有关应用内事件的详细信息请参见富应用内事件指南

所有平台

记录收入

您可以通过任何应用内事件发送收入数据。如需记录收入数据,请务必使用af_revenue参数,只有这个参数才在原始数据和面板报告中统计实际收入。了解详情

安卓原生iOS原生Unity

开发人员的收入事件设定指南请见此文档

验证应用内购

AppsFlyer的SDK可通过服务器验证机制对应用内购进行验证。应用内购验证功能会自动将应用内购事件上报给AppsFlyer,如果广告主侧再发送这些事件就会造成重复上报。

行业垂类

请参考按垂类梳理的应用内事件推荐,其中包括旅游、游戏、电商等各种垂类。

OneLink™深度链接

OneLink是AppsFlyer专为跨平台归因、跳转和深度链接而设计的解决方案。

所有平台

设备识别和跳转

若用户还未安装应用,OneLink能够识别设备类型并跳转到正确的终点(如Google Play、苹果应用商店、三方应用商店、网页等)。具体的跳转取决于您的OneLink模板设置。了解详情

深度链接

如果用户已经安装了您的应用,OneLink就会打开该应用。此外,您还可以通过深度链接让用户跳转到应用中某个具体的页面。要实现这个功能,您的开发人员需要使用Unified Deep Linking(UDL)

注意

  • 若需使用UDL,请确保安装SDK V6.1或以上版本。
  • 如果您已经在用OneLink进行深度链接,那么您可能是通过历史API的方式实现的,而非UDL。

请参见深度链接和延迟深度链接的设置指南。

延迟深度链接

如果用户尚未安装相关应用,OneLink能够识别设备类型并跳转到对应的终点,不管是Google Play、Apple App Store,、第三方应用商店还是落地页。延迟深度链接可以在用户打开应用时将其引导至应用中某个特定的页面。

如需实现这个功能,开发人员须使用扩展延迟深度链接

注意

  • 若需使用UDL,请确保安装SDK V6.1或以上版本。
  • 如果您已经在用OneLink进行延迟深度链接,那么您可能是通过历史API的方式实现的,而非UDL。

请参见深度链接和延迟深度链接的设置指南。

拉取归因和深度链接数据

下表罗列了归因和深度链接数据的各种拉取方式:

方法 相关人员 返回结果 拉取方式 归因数据 深度链接数据 可用级别
Push API • 市场人员 • 后端开发 一般为几分钟 后台 Y N 高阶付费
Pull API • 市场人员 • 后端开发 • 定期(非实时)。• 您可自行设定原始数据报告的下载时间。 后台 Y Y 原始数据报告为高阶付费功能
Data Locker • 市场人员 • 后端开发 报告每小时更新,可在更新后的1-3小时内拉取到。 可从下列云端存储方案中任选一种:• AppsFlyer的AWS存储桶 • 您自有的AWS或GCS存储桶 Y Y 高阶付费
Get conversion data(GCD) • 市场人员 • 移动端开发人员请参考开发者专用文档 最多5秒 SDK Y Y 所有账户
Unified Deep Linking(UDL) • 市场人员 • 移动端开发人员请参考开发者专用文档 最多1秒 SDK N Y 所有账户

对于iOS 14.5+中未授权ATT的用户,请注意以下几点:

  • 在付费媒体或自有媒体中使用UDL时,仍可获取深度链接数据。
  • 在付费媒体中使用GCD时,数据受限且不包含归因和深度链接的具体数据。

 提示

建议您按以下方式拉取数据:

  • 使用Push API拉取归因数据,将其发送到您的服务器上做进一步处理。使用这种方式时,API会等待归因结果,然后再回传数据,因此准确性较高,而且几乎是实时的。GCD虽然能实时返回数据,但由于系统至少需要5秒钟才能判断最终的归因结果,因此有时会出现不准确的现象。
  • 使用Pull API定期(如每天)拉取数据作为对实时归因数据的补充,同时也能弥补数据传输中可能发生的错误。

测试SDK对接

SDK对接配置完成后,您就可以到AppsFlyer面板,进入SDK对接测试页面,测试自然和非自然激活、应用内事件和深度链接,以确保激活和应用内事件能得到正确的记录和归因。

如果您需要开发人员来测试SDK对接,请在您的账户中把相关的开发人员添加为账户用户,这样他们就能够查看面板数据了。

请参阅SDK对接测试说明,了解测试场景和相关指南。

请注意:进行归因测试时,您需要先为您的测试设备加白(安卓或iOS),才能让AF后台将每次激活都记录为新增激活。测试设备加白后,重复激活应用不会被AF判定为重装激活。