AppsFlyer SDK 接入( Android )

第1步:声明存储库
在Project项目目录的build.gradle文件中,声明mavenCentral存储库:

    // ...
    repositories {
       mavenCentral()
    }
    /// ...> 

第2步:添加依赖项
在Application的build.gradle文件中,添加最新的Android SDK包:

  dependencies {
      // Get the latest version from https://mvnrepository.com/artifact/com.appsflyer/af-android-sdk
      implementation 'com.appsflyer:af-android-sdk:6.9.0' 
  }

第3步: 设置所需权限

   将以下权限添加到AndroidManifest.xml:
   <uses-permission android:name="android.permission.INTERNET" />
   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

   如果是 AF SDK v6.8.0 之前, 同时 target API 33( Android 13 ), 就需要手动添加以下权限
   <uses-permission android:name="com.google.android.gms.permission.AD_ID" />

   从 AF SDK v6.8.0 开始, SDK 自动添加 AD_ID 权限, 但是子模块需要手动添加以下声明到 manifest 文件中,避免把 AD_ID 权限合并到子应用中,否则 Google Play 不予通过.
   <uses-permission android:name="com.google.android.gms.permission.AD_ID" tools:node="remove"/>

第4步: 添加 依赖库

  dependencies {
      // ...
      implementation "com.android.installreferrer:installreferrer:2.2"

      // 其中 针对 小米手机 还需要添加, 华为和 三星 从 SDK v6.1.1 不再需要添加额外的依赖项
      implementation "com.miui.referrer:homereferrer:1.0.0.6"
  }

第 5 步: ProGuard规则

 -keep class com.appsflyer.** { *; }
 -keep public class com.android.installreferrer.** { *; }

 // 其中 针对 小米
 -keep public class com.miui.referrer.** {*;}

详情参考: https://zh.dev.appsflyer.com/hc/docs/install-android-sdk

对接SDK

步骤1:导入AppsFlyerLib
在您的全局应用类中,导入AppsFlyerLib:

import com.appsflyer.AppsFlyerLib;

步骤2:初始化SDK
在全局应用onCreate中调用init,参数(argument)如下:

AppsFlyerConversionListener conversionListener =  new AppsFlyerConversionListener() {
    @Override
    public void onConversionDataSuccess(Map<String, Object> conversionDataMap) {
      for (String attrName : conversionDataMap.keySet()){
          Log.d(TAG, "Conversion attribute: " + attrName + " = " + conversionDataMap.get(attrName));
      }

    String status = Objects.requireNonNull(conversionDataMap.get("af_status")).toString();
    if(status.equals("Non-organic")){
      if( Objects.requireNonNull(conversionDataMap.get("is_first_launch")).toString().equals("true")){
        Log.d(TAG,"Conversion: First Launch");
      } else {
        Log.d(TAG,"Conversion: Not First Launch");
      }
    } else {
      Log.d(TAG, "Conversion: This is an organic install.");
    }                    
    Map<String, Object> conversionData = conversionDataMap;
  }

  @Override
  public void onConversionDataFail(String errorMessage) {
      Log.d(TAG, "error getting conversion data: " + errorMessage);
  }

  @Override
  public void onAppOpenAttribution(Map<String, String> attributionData) {
      Log.d(TAG, "onAppOpenAttribution: This is fake call.");
  }

  @Override
  public void onAttributionFailure(String errorMessage) {
      Log.d(TAG, "error onAttributionFailure : " + errorMessage);
  }  
};

AppsFlyerLib.getInstance().init(<AF_DEV_KEY>, conversionListener, this);

步骤3: 启动Android SDK
在应用的onCreate 方法中,调用init后,调用start并将应用的情景作为第一个参数传递给它:

AppsFlyerLib.getInstance().start(this);

posted @ 2023-02-13 18:33  lesten  阅读(1598)  评论(0编辑  收藏  举报