AppsFlyer SDK 对接 - Android

android.pngSDK 版本: 5.0.0 (发布说明)

1. 概述

AppsFlyer SDK为移动应用提供安装和应用内事件的追踪。我们所开发的 SDK 不但非常强大(目前 SDK 安装量已经超过 70 亿)、安全、轻量化,而且可以轻松内嵌。

您可以追踪安装、更新和互动以及应用安装以外的其他应用内事件(包括应用内购买、游戏级别等),以评估 ROI 和用户互动水平。

 重要信息!

AppsFlyer Android SDK 兼容 Android 2.3 及以上版本。

SDK 还与智能电视等基于非移动 Android 的平台兼容, 包括亚马逊的 Fire TV等。

对于为亚马逊 Fire TV 开发的应用, 请使用 AppsFlyer 的 "Out of Store 方案"。

如果您要把 AppsFlyer Android SDK 从3.3.x 升级到更高版本,请点击此处

 提示

2. 快速开始

2.1 SDK 下载

要下载 Android SDK 文件,请点击此处

要验证 SDK 下载的完整性, 请单击此处

如需了解 AppsFlyer 样本应用的详细信息,请点击此处

2.2 将 SDK 嵌入应用

您可以使用 Gradle 的 Dependency Management 自动对接 AppsFlyer SDK,也可以将其作为 SDK.jar 手动对接。

2.3 将 SDK 添加到项目中

将 SDK 对接到您的项目的最简单的方式就是使用 Gradle 的 Dependency Management。如需了解版本信息,请点击此处

如果您使用的不是 Gradle,下载 AF-Android-SDK.jar 并将其添加到项目的类路径中。

添加 AppsFlyer 的 Android SDK Dependency:

  1. 打开您的项目 (或创建新项目), 然后打开your_app | build.gradle。
  2. 加到 Module-level /app/build.gradle 并在 dependencies之前:
repositories { 
  mavenCentral()
}
  1. 使用最新版本的 AppsFlyer SDK 添加 implementation dependency。
  2. 将其添加到模块级别 /app/build.gradle 里的 repository 之后
dependencies {
// always make sure to use the latest SDK version:
// https://mvnrepository.com/artifact/com.appsflyer/af-android-sdk implementation 'com.appsflyer:af-android-sdk:4.9.0' implementation 'com.android.installreferrer:installreferrer:1.0' }

 重要信息!

  • 如果要支持 Google 的 Play Install referrer API. 则需要 'com.android.installreferrer:installreferrer:1.0' dependency使用此 API 可提高归因的准确性,能有效预防安装作弊等现象。
  • AppsFlyer 的 Android SDK 版本4.8.6 及以后都支持该 API。如果从较旧的 SDK 版本进行更新, 则通过更新 SDK 的 init 方法来完成此新 dependency 的集成。
  • 正在使用 ProGuard 并希望使用 Google 的新 referrer API 的开发者必须设置下列 ProGuard 规则:-dontwarn com.android.installreferrer
  • 目前没有使用 Gradle build 或 AAR 而想要使用 Google new referrer API 的开发者必须将 com.android.installreferrer jar 作为一个文件手动添加,并确保添加以下权限:com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE

2.4 设置所需的许可

AndroidManifest.xml 应包括下述许可:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- Optional : -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

2.5 在 AndroidManifest.xml 中设置 BroadcastReceiver

执行 install referrer broadcast receiver 可以使用下面的两个选项:

使用单个 Broadcast Receiver 使用多个 Broadcast Receiver

在AndroidManifest.xml中,请添加以下监听器作为 INSTALL_REFERRER 中第一个监听器,并确保监听器在application tag中:

<application>
...
...

	<receiver android:name="com.appsflyer.SingleInstallBroadcastReceiver" android:exported="true">
		<intent-filter>
			 <action android:name="com.android.vending.INSTALL_REFERRER" />
		 </intent-filter>
	</receiver>

...
...
</application>

 提示

如果将接收器添加到 AndroidManifest.xml 后出现错误 "Unresolved class SingleInstallBroadcastReceiver", 请确保首先生成应用程序。

3. SDK 初始化

SDK 初始化分两步完成。在第一步中,DevKey 随您的应用 ID 及可选的 conversionDataListener 提供。在第二步中,调用 startTracking 表示所有相关的准备工作已经完成(例如调用 setCustomerUserId),而 SDK 可以开始追踪全部事件。在第一步中,DevKey 随可选的 conversionDataListener 提供。在第二阶段, 对 startTracking 的调用表示所有相关的准备工作都已完成 (例如, 调用 setCustomerUserId), SDK 可以开始跟踪所有事件。

要初始化 SDK,将下列代码添加到您的应用的 onCreate() 函数中:

import com.appsflyer.AppsFlyerLib;
import com.appsflyer.AppsFlyerConversionListener;

public class AFApplication extends Application {
  private static final String AF_DEV_KEY = "";
  @Override
  public void onCreate() {
    super.onCreate();
    AppsFlyerConversionListener conversionDataListener = 
    new AppsFlyerConversionListener() {
      ...
    };
    AppsFlyerLib.getInstance().init(AF_DEV_KEY, conversionDataListener, getApplicationContext());
    AppsFlyerLib.getInstance().startTracking(this);  }
}

 注意

您还可以延迟调用 startTracking,并将其放到任何相关的 Activity OnCreate() 函数内。

 提示

下面的 dependency: implementation 'com.android.installreferrer:installreferrer:1.0' 以及 getApplicationContext() 在下面方法中使用: AppsFlyerLib.getInstance().init(AF_DEV_KEY, getConversionListener(), getApplicationContext()); 来实现 Google New Referrer API 向 AppsFlyer 传数据.

您可以在AppsFlyer 控制面板左栏“配置(Configuration)”下的“应用设置(App Settings)“处,找到您账户的 Dev Key:

该 API 确保 AppsFlyer 可以成功检测安装、事件、回话和应用更新。

4. 追踪应用内事件

应用内事件能够为您提供应用内所发生情况的深入分析。强烈建议花些时间定义需要监测的应用内事件,以追踪投资回报率 (ROI) 和用户生命周期价值 (LTV)等数据。

追踪应用内事件是通过调用 trackEvent ,传输事件名称和数值参数来实现的。如需了解更多详细信息,请参阅应用内事件文档

 注意

应用内事件名称长度不得超过 45 个字符。超过 45 个字符的事件名称不会出现在控制面板中,只会出现在原始数据、Pull API 和 Push API 中。

//context - 使用 getApplicationContext()
//eventName 意指定义事件名称的任意字符串。
//eventValues 是包含丰富事件的事件参数的映射。
public static void trackEvent(Context context, String eventName, Map eventValues);


示例
:达到级别的应用内事件

Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.LEVEL,9);
eventValue.put(AFInAppEventParameterName.SCORE,100);
AppsFlyerLib.getInstance().trackEvent(context,AFInAppEventType.LEVEL_ACHIEVED,eventValue);

这样可以生成 af_level_achieved 类型的事件,包含下列事件值:
{af_level: 9, af_score: 100}

 注意

  • 从 Android SDK 4.8.1 版起,AppsFlyer 支持应用内事件或任何其他 SDK API 使用非英语字符。
  • 请勿向数字添加任何货币符号或逗号,以免识别不出。

 使用示例

Map<String,Object> eventValues = new HashMap<>();
eventValues.put(AFInAppEventParameterName.REVENUE, 1200);
eventValues.put(AFInAppEventParameterName.CURRENCY, "JPY");
AppsFlyerLib.getInstance().trackEvent(this, AFInAppEventType.PURCHASE, eventValues);

5. 追踪深度链接

 提示

我们强烈建议将深度链接与您的应用相对接。深度链接是访客找回营销活动的重要组成部分,强烈建议您在开展访客找回营销活动时使用这一功能。

对于可能会用于深度链接的各activity(如果需要的话,包括main activity),将下面的行添加到:onCreate():

AppsFlyerLib.getInstance().sendDeepLinkData(this);

打算通过深度链接打开的 Activities 应该在 manifest 文件里 Activity 定义里面有 Intent Filter

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data android:scheme="yourUniquescheme" />
</intent-filter>


方案配置了与您在跟踪链接中包含的 af _ dp 值相关的关系。

若要接收深度链接数据必须在 onAppOpenAttribution 时用配置 AppsFlyer SDK 相关代码实现回调它返回用于触发应用程序打开的 Onelink/跟踪链接参数,然后,您可以解析其值并配置代码逻辑来触发相关页面。

void onAppOpenAttribution(Map<String,String> attributionData);

如需了解更多信息,请点击此处,或查看本文章中的获取转化数据一节。

6. 追踪收入

使用 af_revenue (AFInAppEventParameterName.REVENUE) 事件参数去计算应用内事件的收入。您可以输入任意正负数值。

 注意

af_revenue 是唯一在 AppsFlyer 上作为原始数据和仪表板上的实际收入计算的事件参数。了解更多详细信息,请点击此处

示例:付费收入类的应用内事件

Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REVENUE,200);
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE,"category_a");
eventValue.put(AFInAppEventParameterName.CONTENT_ID,"1234567");
eventValue.put(AFInAppEventParameterName.CURRENCY,"USD");
AppsFlyerLib.getInstance().trackEvent(getApplicationContext() , AFInAppEventType.PURCHASE , eventValue);

这样可以生成 af_purchase 类型的事件,包含下列事件值:

{af_content_id: “1234567”, af_content_type: “category_a”, af_revenue: 200, af_currency: “USD”}

上述购买事件包含 200 美元收入,以收入形式显示于控制面板。

 注意

为应用内购买设置用户本地货币代码-货币代码应为3个字符的 ISO 4217 代码。(默认值为美元)。

您可以通过调用以下方法来设置所有事件的币种代码: AppsFlyer.setCurrencyCode("GBP");

 重要信息!

不要给收入值设置任何格式。它不应包含逗号分隔符、货币符号或文本。例如,收入事件应类似于 1234.56。

追踪负收入

如果您需要跟踪负收入, 例如当用户取消购买或获得退款时, 您可以发送负收入。

Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REVENUE,-200);
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE,"category_a");
eventValue.put(AFInAppEventParameterName.CONTENT_ID,"1234567");
eventValue.put(AFInAppEventParameterName.CURRENCY,"USD");
AppsFlyerLib.getInstance().trackEvent(getApplicationContext() , "cancel_purchase" , eventValue);

 注意

请注意上面代码中的以下内容:

  1. 收入值前面有一个减号
  2. 事件名称具有 "cancel_purchase" 的唯一值-允许您在主面板和原始数据报告中识别负收入事件

7. 获取转化数据

AppsFlyer 令您可以直接在 SDK 级别上实时访问每次新安装的用户归因数据。这样,您就可以为用户提供个性化内容或将内容发送到应用内的特定活动,这样可以大大增强与应用的互动。

要通过 Android SDK 访问 AppsFlyer 的转化数据,请执行 ConversionDataListener:

public interface AppsFlyerConversionListener {
    void onInstallConversionDataLoaded(Map<String,String> conversionData);
    void onInstallConversionFailure(String errorMessage);
}


示例

AppsFlyerLib.getInstance().registerConversionListener(this, new AppsFlyerConversionListener() {
 @Override
 public void onInstallConversionDataLoaded(Map<String, String> conversionData) {
   for (String attrName : conversionData.keySet()) {
     Log.d("LOG_TAG", "attribute: " + attrName + " = " + conversionData.get(attrName));
   }
 }
 @Override
 public void onInstallConversionFailure(String errorMessage) {
   Log.d("LOG_TAG", "error getting conversion data: " + errorMessage);
 }
 @Override
 public void onAppOpenAttribution(Map<String, String> conversionData) {
 }
 @Override
 public void onAttributionFailure(String errorMessage) {
   Log.d("LOG_TAG", "error onAttributionFailure : " + errorMessage);
 }
});

8. 用户标示符

获取 AppsFlyer Device ID

应用内的每次新安装都会创建一个 AppsFlyer 独有的 device ID。使用下列 API 获取 AppsFlyer 独有的 ID:

public String getAppsFlyerUID(Context context);


使用示例:

String appsFlyerId = AppsFlyerLib.getInstance().getAppsFlyerUID(this);

设置客户用户 ID

设置您自己的客户 ID 可以帮助您交叉引用自己的独有 ID 以及 AppsFlyer 的独有 ID 和其他设备的 ID。该 ID 可以通过 Postback API 在 AppsFlyer CSV 报告中得到,用于与您的内部 ID 交叉引用。

要设置您的客户用户 ID:

public void setCustomerUserId(String id);

 

用法示例:

AppsFlyerLib.getInstance().setCustomerUserId("myId");

 注意

建议您尽快设置自己的 Customer User ID,因为此 ID 只有在设置后才会与事件报告关联。如果在调用 startTracking 之前调用了 setCustomerUserId, 则在安装和事件的原始导出中将具有客户用户 ID。如果在之后设置, 您将只看到调用此方法后跟踪的事件的值。

客户用户 ID 还可用于完成与 "分析平台" (如 Mixpanel 和 Swrve) 的集成。

 

获取客户用户 ID

为了避免在首次启动后再次设置客户用户 ID 值, 您可以使用以下方法检查其值是否为空:

AppsFlyerProperties.getInstance().getString(AppsFlyerProperties.APP_USER_ID)

了解客户用户 ID 的更多信息,请单击此处

Google Advertising ID

从 SDK 4.8.0 版起,AppsFlyer 会自动收集 google_advertising_id。只有 SDK 4.7.X 及以下版本需要收集 Google Advertising ID。

IMEI 和 Android ID

默认情况下, 如果操作系统版本高于 KitKat (4.4), 并且设备包含 Google Play 服务 (在 SDK 版本4.8.8 和特定应用需要 GPS), 则 SDK 不会收集 IMEI 和 Android ID。

要将这些 ID 显式发送到 AppsFlyer,开发者可使用以下 API 并将其置于 startTracking 代码前:

AppsFlyerLib.getInstance().setImeiData("IMEI_DATA_HERE");
AppsFlyerLib.getInstance().setAndroidIdData("ANDROID_ID_DATA_HERE");

如果应用不包含 Google Play Services,则 SDK 将收集 IMEI 和 Android ID。然而,采用 Google Play Services 的应用应避免收集 IMEI,以免违反 Google Play 政策

开发者可以使用这些 API 停止收集 IMEI 和 Android ID:

AppsFlyerLib.getInstance().setCollectIMEI(false);
AppsFlyerLib.getInstance().setCollectAndroidID(false);

 警告

为了进行正确归因,必须至少收集一个设备标示符,即 GAID、Android ID 或 IMEI。

9. 可选功能

监测卸载

AppsFlyer 使您能够测量来自不同来源的用户的卸载率。

要完成此过程, 请参考此处介绍

追踪推送通知

AppsFlyer 使您能够将推送通知作为找回营销广告进行监测。

要启用该功能,在每一个活动的 onCreate 方法调用以下方法,该方法在点击通知时会启动: 

AppsFlyerLib.getInstance().sendPushNotificationData(this);

数据有效载荷应包含一个对象:af,并具有相关联的键值字符串:

示例

{ 
  "data":{ 
   "score":"5x1",
   "time":"15:10",
   "af":{ 
     "c":"test_campaign",
     "is_retargeting":"true",
     "pid":"push_provider_int"
   }
  }
}
{

{ 
  "data":{ 
   "score":"5x1",
   "time":"15:10",
   "click_action":"com.example.someAction",
   "af":{ 
     "c":"test_campaign",
     "is_retargeting":"true",
     "pid":"push_provider_int"
   }
  }
}

 注意

了解关于推送通知监测的更多信息,请点击此处阅读说明。

交叉促销追踪

AppsFlyer 允许您对用户现有应用中的交叉促销带来的安装进行追踪和归因。交叉促销应用可能成为增加您的应用安装量的主要增长因素之一。

了解详细信息,请点击此处参阅“交叉促销追踪”文章。

用户邀请追踪

AppsFlyer 允许您追踪并归因从应用内的用户邀请发起的安装。允许您现有的用户邀请朋友或联系人成为您应用的新用户,这可以成为应用的一个关键增长因素

了解详细信息,请点击此处参阅“用户邀请追踪”文章。

设置货币代码 

除了可以设置特定货币代码作为各应用内事件发送到 AppsFlyer 的部分,您还可以使用以下 API 设置全局货币代码。请使用全局货币代码,若 af_currency

AFInAppEventParameterName.CURRENCY

未作为应用内事件的一部分发送时,则使用全局货币代码。

默认值为 USD。您可以在这里找到 API 可用的 ISO 货币代码。

使用以下 API 设置货币代码:

public void setCurrencyCode(String currencyCode);

用法示例:

AppsFlyerLib.getInstance().setCurrencyCode("GBP");

应用内购买验证

AppsFlyer 的 SDK 对于应用内购买提供服务器验证。要设置购买验证追踪,请在 onActivityResult 函数中调用 validateAndTrackInAppPurchase 方法。

该方法调用将自动生成一个 af_purchase 应用内事件。

public static void validateAndTrackInAppPurchase(Context context, 
String publicKey, String signature, String purchaseData, 
String price, String currency, HashMap<String, String> additionalParameters);

该方法调用有两个回调,一个是“成功”,另一个是“失败”(出于任何原因,包括验证失败)。

AppsFlyerLib.getInstance().registerValidatorListener(this,new
   AppsFlyerInAppPurchaseValidatorListener() {
     public void onValidateInApp() {
       Log.d(TAG, "Purchase validated successfully");
     }
     public void onValidateInAppFailure(String error) {
       Log.d(TAG, "onValidateInAppFailure called: " + error);
     }
});


使用示例:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  if (requestCode == 1001) {
    String purchaseData = data.getStringExtra("INAPP_PURCHASE_DATA");
    String dataSignature = data.getStringExtra("INAPP_DATA_SIGNATURE");
    if (resultCode == RESULT_OK) {
      HashMap<String,String> event = new HashMap<>();
      event.put(AFInAppEventParameterName.PRICE,"9");
      AppsFlyerLib.getInstance().validateAndTrackInAppPurchase(getApplicationContext(),publicKey, dataSignature, purchaseData, "3.00", "ILS", event);
    }
  }
} 

 注意

调用有效的 validateAndTrackInAppPurchase 发作会自动生成一个af_purchase 应用内事件。没有必要自己发送此事件。

匿名用户数据

AppsFlyer 为您提供在 AppsFlyer 分析中匿名特定用户标示符的方法。该方法符合最新的隐私要求并遵守 Facebook 数据和隐私政策。默认为 NO,表示默认未进行匿名。

在 SDK 初始化过程中,使用该 API 明确匿名用户安装、事件和互动:

public void setDeviceTrackingDisabled(boolean isDisabled);


使用示例:

AppsFlyerLib.getInstance().setDeviceTrackingDisabled(true);

可以通过再次调用 deviceTrackingDisabled,并设置为 false,重新启动追踪。

 警告

对用户匿名会严重影响您的归因信息。
只在法律要求您不得收集用户信息的地区使用此选项。

自定义互动之间的时间

默认情况下,在两次应用启动之间必须至少间隔 5秒,才能将其计为两次独立的应用开启(更多有关应用启动计数的信息)。
但是,您可以使用以下 API自定义两次应用启动之间所需的最小时间:
appsflyerlib. setmintimemebetweensession (intseconds);

请注意,将 较大值 自定义设定为启动间隔将严重影响 API 包含的会话数据,如深度链接。

工具类应用的后台互动

如果您的应用是在后台运行的工具类应用,您可在活动的 onCreate() 中使用该 API -

public void reportTrackSession(Context context);


使用示例:

AppsFlyerLib.getInstance().reportTrackSession(context);

跟踪应用商店外的应用

 注意

Google Play 为默认应用商店。如果您的应用只在 Google Play 上发布,请跳过这一部分。

要追踪 Google Play 商店外的安装,请在应用的 AndroidManifest.xml 中设置渠道/商店,各 APK 应具有唯一的渠道或商店名称。CHANNEL 的值区分大小写。

示例

<meta-data android:name="CHANNEL" android:value="Amazon" />
<meta-data android:name="CHANNEL" android:value="Standalone"/>
<meta-data android:name="CHANNEL" android:value="Verizon" />

 注意

必须在设置应用时在 AppsFlyer 控制面板上配置 CHANNEL 的值。

将meta-data标签置于 </application> 标签前。

了解关于如何追踪商店外应用安装的更多详细信息,请点击此处阅读说明。

退出

在某些极端情况下,您可能出于法律和隐私合规方面的考虑,希望关闭所有 SDK 追踪。这可以通过 isStopTracking API 来实现。一旦调用此 API, 我们的 SDK 将不再与我们的服务器通信并停止运行。

AppsFlyerLib.getInstance().stopTracking(true,context);

有几种不同的方案为用户选择退出。我们强烈建议您遵循与你的应用相关的方案的确切说明

在任何情况下,可调用相同 API 以重新激活 SDK,但会传递 False。

 重要

如果 isStopTracking 设置为 true, 请不要调用 trackAppLaunch

要在 stopTracking 设置为 false 后再次开始跟踪, 请使用以下 SDK API:

AppsFlyerLib.getInstance().trackEvent(getApplicationContext(), 
AF _ DEV _ KEY);

 警告

仅在您完全不想追踪该用户时,使用 stopTracking API。使用此 API 将严重影响您的归因、数据收集以及 深度链接 机制。

为 customerUserID 延迟 SDK 初始化

可以延迟 SDK 的初始化,直到 customerUserID 设置完毕。此功能可确保在提供 customerUserID 之前,SDK 不会运行。如果使用此 API,所有应用内事件以及任何其他 SDK API 调用都被忽略,直到提供 customerUserID 并对其进行追踪。

指示 SDK 应延迟客户用户 ID 调用的初始化

AppsFlyerLib.getInstance().waitForCustomerUserId(true);

紧接 init () 方法之前。SDK 初始化的其他部分保持不变。

有了 customerUserID 之后 , 请调用

AppsFlyerLib.getInstance().setCustomerIdAndTrack("customer_id", this);

为 SDK 提供相关的客户用户 ID, 并触发 SDK 以开始其正常跟踪。

代码应如下所示:
public class AFApplication extends Application {
   private static final String AF_DEV_KEY = ;
   @Override
   public void onCreate() {
       super.onCreate();
AppsFlyerConversionListener conversionDataListener = 
       new AppsFlyerConversionListener() {
      ...
    };
       AppsFlyerLib.getInstance().waitForCustomerUserId(true); 
AppsFlyerLib.getInstance().init(AF_DEV_KEY,getConversionListener(), getApplicationContext());
       AppsFlyerLib.getInstance().startTracking(this);
// 正确设置以获取 customerUserID
       // ...
       // 此时对 AppsFlyer SDK 代码的任何调用都将被忽略
      //一旦 customerUserID 可用,调用以下 API:
 AppsFlyerLib.getInstance().setCustomerIdAndTrack("customer_id", this);⏎   }⏎}

 警告

仅在适合您的业务逻辑的情况下使用此 API。使用此 API 会提高数据差异的几率,并且可能使应用更容易暴露于诈骗中。

设置其他自定义数据

setAdditionalData API 需要在 SDK 级别与若干外部合作伙伴平台对接,包括 SegmentAdobe 和 Urban Airship。仅在平台对接文章明确说明需要 setAdditionalData API 时,才使用该 API。
以下为在 Android 上实施 setAdditionalData 的代码示例:

HashMap<String,Object> CustomDataMap = new HashMap<>();
CustomDataMap.put("custom_param_1","value_of_param_1");
AppsFlyerLib.getInstance().setAdditionalData(CustomDataMap);

预装应用的归因

有多种方法可用于预装应用的 Android 归因。

如需了解详情,请点击此处

设置跟踪请求监听器

如果要收到 AppsFlyer 服务器成功接收跟踪请求的确认, 则可以实现 Appsflyer TrackingRequestListener 侦听器。

对于 SDK 发出的归因请求的每200个响应, 就会调用 onTrackingrequest

onTrackingRequestFailure(String error) 会被调用, 如果响应作为错误字符串返回。

实施实例

AppsFlyerLib.getInstance().startTracking(this.getApplication(),"devKey", myListener());
private AppsFlyerTrackingRequestListener myListener() {  
  return new AppsFlyerTrackingRequestListener() { 
    @Override public void onTrackingRequestSuccess() { 
      Log.d("Debug", "Got 200 response from server");  
    }  @Override public void onTrackingRequestFailure(String error) { 
      Log.d("Debug", error); 
      }  
    }; 
  }

解决已包装的深度链接 URL

如果你使用的是支持安卓 App Links 的 OneLinks 并用第三方的 Universal Link 将其包装, 你可以使用 setResolveDeepLinkURLs API 来通知 AppsFlyer SDK 哪个唤起应用的点击域应该被 SDK 解析,并且将底层 OneLink 提取出来。这将允许您在将 OneLink 与第三方 Universal Link 包装时,保留深度链接和其追踪。请确保在 SDK 初始化之前调用此 API。

AppsFlyerLib.getInstance().setResolveDeepLinkURLs("example.com", "click.example.com");

10. 测试 SDK 对接

要在提交到 Google Play 商店之前或之后测试 SDK 对接,请点击此处

现在, 您可以开始跟踪与您合作的媒体平台

11. 已知问题

如果您使用的是 ProGuard, 并且遇到有关我们的 AFKeystoreWrapper class 的警告, 请将以下代码添加到您的 ProGuard 规则文件中:

-keep class com.appsflyer.** { *; }
这篇文章有帮助吗?
31 人中有 25 人觉得有帮助

评论

0 条评论

登录写评论。