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);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现