AppsFlyer 研究(一)AppsFlyer SDK 集成(1)

简介: AppsFlyer 研究(一)AppsFlyer SDK 集成

一、AppsFlyer 简介

 

作为AppsFlyer完整归因解决方案的一部分,AppsFlyer Android SDK提供了应用程序安装和事件记录功能。该SDK经过市场验证,安全,轻便且易于嵌入。

应用程序嵌入SDK后,您可以记录安装,会话和其他应用内事件(例如,应用内购买,游戏级别等)来评估用户参与度,甚至投资回报率!

AppsFlyer提供了以下解决方案:

  • 适配主流厂商OAID
  • 鉴于国内安卓生态不会使用GAID,将根据 OAID 或设备IMEI进行归因,以替代GAID
  • 除了提供归因的媒体渠道字段,还会提供商店/渠道包字段,保证每一条激活数据包含用户完整转化路径:从渠道的点击/曝光数据,到最终APK下载来源,可以轻松识别商店劫持。
  • 配置为中国市场专门制定的归因链接(即点击监测链接)。

 

选项卡 目的 完成后
SDK集成强制 添加并配置SDK 应用面板记录到一个新的自然安装应用面板记录到一个新的非自然安装
核心API (推荐) 测量应用内事件、收入、执行深度链接、统计转化数据 使应用内事件和收入显示在控制面板上实现深度链接
其他API推荐 可选API的实现和使用我们建议检查该列表,因为一些可选API可能对您的商务计划至关重要,例如统计卸载或推荐归因。 可以统计卸载、推荐安装、用户与推送通知的互动度等
API参考 开发人员SDK API的快速参考  

 

 

二、集成AppsFlyer

 

1、将SDK添加到应用, 使用Gradle

(1)、将以下代码添加到 dependencies 之前的 /app/build.gradle

模块:

repositories { 
  mavenCentral()
}

(2)、添加最新版本的AppsFlyer SDK 为dependency。

dependencies {
//make sure to use the latest SDK version: https://mvnrepository.com/artifact/com.appsflyer/af-android-sdk
    implementation 'com.appsflyer:af-android-sdk:5.0.0'
}

(3)、同步项目以检索依赖项-请参见以下截图:

 

 

 

2、添加Android Install Referrer 到您的App中

Android Install Referrer可提高归因准确性,防止安装欺诈等。从AppsFlyer Android SDK版本4.8.6开始受支持。

 

(1)、把安卓安装Referrer添加为dependency.您可以在 此处找到最新版本

dependencies {
//make sure to use the latest SDK version: https://mvnrepository.com/artifact/com.appsflyer/af-android-sdk
    implementation 'com.appsflyer:af-android-sdk:5.+'
    implementation 'com.android.installreferrer:installreferrer:1.0'
}

(2)、同步项目以检索依赖项-请参见以下截图:

 

(3)、设置所需权限

添加permissions有助于提高指纹归因的比率。它还允许SDK发送更多数据,例如Wifi和运营商网络数据。您可以在原始数据报告找到此数据,并将其用于分析和优化活动。

 

将以下权限添加到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" />

(4)、设置BroadcastReceiver以从Google Play获取数据

Google 在2020年3月份弃用了 BroadcastReceiver 为了不影响归因准确性,请您参考文档2.2部分,实施接入installreferrer。您可能仍需要使用BroadcastReceiver进行Google市场外商店的归因。请您与上架应用程序的Google市场外商店进行核对。

 

如果您没有在AndroidManifest.xml的INSTALL_REFERRER上设置receiver监听,则在application标签内添加以下接收器:

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

 

3、SDK初始化

 

(1)、检索dev key (开发者密钥)

AppsFlyer使用唯一的dev key来标识您的帐户。dev key是强制性的,因为它允许SDK安全地发送和检索属于您AppsFlyer帐户的数据。

重要提示:初始化SDK时,使用正确的dev key至关重要。使用错误的dev key会影响从SDK发送的所有流量,并导致归因和报告问题。

获取您的dev key:

  • 转到应用控制面板。
  • 在控制面板的 配置 单击 应用设置
  • 复制您的dev key。

 

(2)、初始化SDK

我们建议在应用程序的全局应用程序类(global application state)中初始化SDK。这使SDK可以在所有方案中进行初始化,包括深度链接。

下述步骤发生在应用的全局类(global application class)中

  • 在应用的global class中,导入以下库

import android.app.Application;

import android.util.Log;

import com.appsflyer.AppsFlyerLib;

import com.appsflyer.AppsFlyerConversionListener;

import java.util.Map;

  • 在全局类内,设一个变量记录您的dev key,推荐命名为AF_DEV_KEY。

重要:初始化SDK时,使用正确的dev key至关重要。使用错误的dev key会影响从SDK发送的所有流量,并导致归因和报告问题。

 

public class AFApplication extends Application {
    private static final String AF_DEV_KEY = "qrdZGj123456789";
    //...
}
  • 在global class内部,在调用super.onCreate()后 ,实施AppsFlyerConversionListener.请参阅下面步骤4中的代码。
  • 在全局类中,在ConversionListener,初始化SDK并调用startTracking方法。
public class AFApplication extends Application {
    private static final String AF_DEV_KEY = "qrdZGj123456789";
    @Override
    public void onCreate() {
        super.onCreate();
        AppsFlyerConversionListener conversionListener = new AppsFlyerConversionListener() {
            @Override
            public void onConversionDataSuccess(Map<String, Object> conversionData) {
                    for (String attrName : conversionData.keySet()) {
                    Log.d("LOG_TAG", "attribute: " + attrName + " = " + conversionData.get(attrName));
                }
            }
            @Override
            public void onConversionDataFail(String errorMessage) {
           Log.d("LOG_TAG", "error getting conversion data: " + errorMessage);
            }
            @Override
            public void onAppOpenAttribution(Map<String, String> conversionData) {
                for (String attrName : conversionData.keySet()) {
                    Log.d("LOG_TAG", "attribute: " + attrName + " = " + conversionData.get(attrName));
                }
            }
            @Override
            public void onAttributionFailure(String errorMessage) {
                Log.d("LOG_TAG", "error onAttributionFailure : " + errorMessage);
            }
        };
        AppsFlyerLib.getInstance().init(AF_DEV_KEY, conversionListener, getApplicationContext());
        AppsFlyerLib.getInstance().startTracking(this);
    }
}

 

(3)、注册该global application class

 

在AndroidManifest.xml文件的application标签内,添加以下行:

android:name="APP.PACKAGE.NAME.AFApplication"

 

  • APP.PACAKGE.NAME-用应用包名替换。
  • AFApplication-用应用global class中设置的名称替换它

 

 

 

manifest.xml中的这一行告诉应用程序什么是全局应用程序。如上所述,这样做使AppsFlyer SDK可以在整个应用程序中全局访问。

 

4、测试安装

 

(1)、将设备加入白名单

将设备列入白名单可让您多次使用同一设备进行安装归因测试。本文介绍如何通过添加和删除设备来管理白名单。

 

在执行归因测试时,“重新归因”窗口会将安装归因限制为每90天窗口一次。因此,如果您反复使用同一设备测试安装归因,则不会记录任何内容。通过将设备列入白名单可以解决此问题。

以下作为参考

  • 白名单测试设备会忽略重新归因规则
  • 白名单中的设备适用于帐户中的所有应用
  • 广告平台和代理商需要要求广告主添加设备
  • 每个帐户最多可以将40台设备列入白名单
  • 只有管理员可以删除设备

 

管理白名单

通过添加和删除设备来管理您的白名单。

有两种方法可以将设备添加到白名单。

 

要下载AppsFlyer设备ID应用程序:

  • 使用二维码(Google Play商店)或提供的链接之一下载并安装该应用。

Android iOS Windows


 

  • 在Android / iOS / Windows屏幕上,点击白名单按钮。

 

  • 输入您的AppsFlyer登录凭证。该设备现已列入白名单。
  • 点击共享以使用系统共享对话框共享设备ID信息。

 

通过用户界面手动添加设备

团队成员可以手动将设备标识符添加到测试设备列表中。

将设备添加到白名单:

  1. 在AppsFlyer中,单击您的电子邮件地址会有下拉列表。
  2. 选择测试设备 。 将打开“测试设备”页面。
  3. 点击 Add device
  4. 根据需要完成:
  • 操作系统:选择一个操作系统。
  • 名称(仅使用英文字母):输入设备的标识名。
  • 标识符:根据操作系统(OS)提供设备标识符:Android iOS Windows使用AppsFlyer设备ID应用获取设备标识符通过将代码拨入设备或使用链接来获取标识符:

 

 

(2)、模拟自然安装

自然安装是未被归因的安装,通常是直接前往应用商店安装的用户。

要模拟自然安装:

  1. 确保已将移动设备连接到计算机。
  2. 在Android Studio中,打开Logcat。
  3. 在Android Studio中,将应用安装到设备或模拟器上。
  4. 等待应用启动。
  5. 在Logcat中,查找该应用的包名。

您应该看到以下内容:

 

 

屏幕截图中突出显示的部分表示SDK报告了自然安装。此数据来自AFApplication类中的onConversionDataSuccess方法。

 

注意: 从SDK Version5开始, onConversionDataSuccess是获取转换数据的方法的名称。如果使用的SDK版本低于5.0.0,则该方法的名称为onInstallConversionDataLoaded

 

(3)、模拟非自然安装

非自然安装通常是在广告互动之后的可归因安装。您可以使用归因链接模拟非自然安装。

模拟非自然安装:

  1. 在manifest中,找出您的应用包名,例如com.company.app
  2. 在下面的URL中,将<PACKAGE_NAME>替换为您的应用包名:

https://app.appsflyer.com/<PACKAGE_NAME>?pid=sdk_test&c=sdk_test


  1. 参数 pid 代表媒体渠道名称。
    参数 c 表示广告系列名称。
  2. 将此URL发送到设备。可以通过电子邮件或WhatsApp发送
  3. 在设备上,单击URL。
  • 如果该应用已在应用商店上架,那您将跳转至应用商店。不要从应用商店下载并安装该应用。继续执行步骤5。
  • 如果该应用未在应用商店上架并且仍在开发中,则屏幕会显示‘在应用商店中找不到这个应用’。继续执行步骤5。
  1. 在Android Studio中,打开Logcat。
  2. 使用USB数据线将设备连接到计算机。
  3. 通过Android Studio在设备上安装该应用。
  4. 在Logcat中,查找该应用的包名。

您应该看到以下内容:

 

三、集成SDK常见问题

 

1、ProGuard警告

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

-keep class com.appsflyer.** { *; }

 

2、备份规则

如果您在AndroidManifest.xml的<application>标签内添加android:fullBackupContent="true",您可能会收到错误提示:

Manifest merger failed : Attribute application@fullBackupContent value=(true)

 

要解决此错误,请在AndroidManifest.xml文件的<application>标签中添加 tools:replace="android:fullBackupContent

如果您指定了自己的备份规则,请通过添加以下规则将它们与AppsFlyer规则手动合并:

<full-backup-content>
    ...//your custom rules
    <exclude domain="sharedpref" path="appsflyer-data"/>
</full-backup-content>

 

3、缺少资源文件

如果您使用的Android SDK 为5.0.0或更高版本,请确保在APK中,除了 classes.dexresources 文件外,您的文件夹 com > appsflyer > internal 中同样包含文件 a.b.

如果这些文件丢失,则SDK无法向我们的服务器发出网络请求。

在Android Studio中打开您的APK来检查您是否有必须的文件。

请参阅以下屏幕截图以供参考。

 


相关文章
|
6月前
|
Java API 开发工具
支付与银行业线上客户协议应用中的DocuSign集成方式选择——SDK和API
跨境支付公司和Docusign进行集成时,碰到问题时的解决方案。分别用SDK和API集成后的各自使用体验。
103 2
支付与银行业线上客户协议应用中的DocuSign集成方式选择——SDK和API
|
3月前
|
机器学习/深度学习 存储 搜索推荐
Elasticsearch与深度学习框架的集成案例研究
Elasticsearch 是一个强大的搜索引擎和分析引擎,广泛应用于实时数据处理和全文搜索。深度学习框架如 TensorFlow 和 PyTorch 则被用来构建复杂的机器学习模型。本文将探讨如何将 Elasticsearch 与这些深度学习框架集成,以实现高级的数据分析和预测任务。
39 0
|
4月前
|
Serverless 语音技术 开发工具
函数计算操作报错合集之怎么何集成nls tts python sdk
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
|
6月前
|
人工智能
MIT等首次深度研究集成LLM预测能力:可媲美人类群体准确率
【4月更文挑战第16天】研究人员集成12个大型语言模型(LLM)组成“硅基群体”,在预测比赛中与925名人类预测者对比。研究发现,LLM群体的预测准确性与人类群体无显著差异,且通过集成可抵消个体模型的偏差,提高预测准确。GPT-4和Claude 2等模型结合人类预测后,准确度提升17%至28%。然而,个别LLM预测精度不一,模型选择和校准度是提升预测性能的关键,同时LLM在时间跨度和现实场景适应性方面仍有挑战。
91 6
MIT等首次深度研究集成LLM预测能力:可媲美人类群体准确率
|
6月前
|
Web App开发 前端开发 JavaScript
如何快速与呼叫中心系统CTI/API/SDK接口集成
由于呼叫中心系统涉及通信、CTI、终端设备、中继线路等技术与概念,从事信息管理系统、ERP、CRM、工单系统等的研发人员一般不是非常熟悉这部分技术,当需要提供具备呼叫中心能力的解决方案时,往往要用较多的时间来研究这些相对复杂的技术,对接过程比较长,开发调试有一定的阻力,基于此,我们提出一种更加简便高效的集成方法,可以零代码集成呼叫中心平台,实现项目快速上线。
如何快速与呼叫中心系统CTI/API/SDK接口集成
|
11月前
|
开发工具 数据安全/隐私保护
您需要检查并确保应用是否正确集成了EMAS的SDK
您需要检查并确保应用是否正确集成了EMAS的SDK
44 1
|
11月前
|
分布式计算 Hadoop Java
hadoop sdk 优化小结(裁剪、集成kerberos组件、定制等)
hadoop sdk 优化小结(裁剪、集成kerberos组件、定制等)
69 0
|
4月前
|
监控 druid Java
spring boot 集成配置阿里 Druid监控配置
spring boot 集成配置阿里 Druid监控配置
280 6
|
4月前
|
Java 关系型数据库 MySQL
如何实现Springboot+camunda+mysql的集成
【7月更文挑战第2天】集成Spring Boot、Camunda和MySQL的简要步骤: 1. 初始化Spring Boot项目,添加Camunda和MySQL驱动依赖。 2. 配置`application.properties`,包括数据库URL、用户名和密码。 3. 设置Camunda引擎属性,指定数据源。 4. 引入流程定义文件(如`.bpmn`)。 5. 创建服务处理流程操作,创建控制器接收请求。 6. Camunda自动在数据库创建表结构。 7. 启动应用,测试流程启动,如通过服务和控制器开始流程实例。 示例代码包括服务类启动流程实例及控制器接口。实际集成需按业务需求调整。
346 4
|
4月前
|
消息中间件 Java 测试技术
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息
304 1
下一篇
无影云桌面