乐趣区

关于java:如何正确跟踪广告转化数据优化广告投放效果

为什么要做转化跟踪

广告界有一句老话,我晓得我的广告费有一半是节约掉的,然而不晓得是怎么节约掉的。所以对广告主来说广告跟踪十分重要,当你花了一大笔估算去做广告投放,带来的成果如何?如何依据每次广告投放的数据,去调整优化投放策略,这些都要靠广告跟踪来取得。

但现实情况是,广告平台与广告主侧的数据存在人造的割裂。广告平台能采集到装置事件,但利用内如付费、激活等转化事件平台采集不到,无奈剖析实在的转化率。广告主能轻易收集到理论转化的状况,但无奈和广告工作相关联,影响对后续投放的优化。而通过转化跟踪,能够将广告主侧的转化事件与广告平台侧的投放工作相关联,从而为投放成果剖析做数据撑持。

什么是转化跟踪

转化跟踪是将广告主最关注的转化行为(OAID、工夫戳、转化行为、行为参数)通过 API、SDK 等形式上报给广告平台的产品。基于转化跟踪,广告主能够具体跟踪广告成果,监测不同平台、不同模式的广告带来的流量与对应转化成果,为一直优化广告投放提供精确的数据根据。

为了更好地帮忙广告主在华为设施上进行利用推广,华为广告服务(HUAWEI Ads Kit)也提供转化跟踪能力,不便广告主进行广告转化渠道跟踪和转化成果剖析。

华为广告服务转化跟踪参数能力工作原理

1. 广告主 App 集成广告服务获取转化跟踪参数能力并上架华为利用市场(AppGallery)。
2. 广告主在华为广告平台(Ad Network)投放 App 下载类广告,并设置转化跟踪参数。3. 媒体 App(Media App)申请并展现广告主投放的广告。
4. 用户在媒体 App 上点击广告主投放的广告,用户能够抉择并下载安装广告主 App。
5. 华为利用市场(AppGallery)将转化跟踪参数写入广告服务。
6. 用户在端侧激活广告主 App 时,App 从广告服务获取转化跟踪参数。
7. 广告主 App 上报激活事件给三方监测平台(Third-party tracking platform),平台可应用转化跟踪参数剖析 App 转化成果。

开发步骤

一、集成转化跟踪参数凋谢能力(SDK 形式)
SDK 形式指广告主通过华为广告服务提供的 SDK 接入凋谢能力,取得 App 转化跟踪参数

集成 SDK

1. 配置 HUAWEI Ads SDK 的 Maven 仓地址
关上 Android Studio 我的项目级 ”build.gradle” 文件,在 ”allprojects > repositories” 外面配置 SDK 的 Maven 仓地址。

allprojects { 
        repositories {google() 
                jcenter() 
                maven {url 'https://developer.huawei.com/repo/'} 
        } 
}

2. 配置依赖
关上子工程 ”app” 下的 ”build.gradle” 文件,在 dependencies 新增 SDK 的依赖,并将 {version} 替换为理论的 HUAWEI Ads SDK 版本号,请参见版本更新阐明。

dependencies {implementation 'com.huawei.hms:ads-installreferrer:{version}' 
}

3. 同步批改的文件

4. PK 前须要配置不要混同 HUAWEI Ads SDK,防止性能异样。
关上 Android 工程利用级根目录下的 ”app/proguard-rules.pro” 混同配置文件,增加如下两行代码,退出排除 HUAWEI Ads SDK 的混同配置。

allprojects { 
        repositories {google() 
                jcenter() 
                maven {url 'https://developer.huawei.com/repo/'} 
        } 
}

创立转化跟踪参数状态监听器
1. 实现 InstallReferrerStateListener 监听器接口的两个办法 onInstallReferrerSetupFinished 和 onInstallReferrerServiceDisconnected,代码示例如下:

/** 
* 创立监听 
*/ 
private InstallReferrerStateListener installReferrerStateListener = new InstallReferrerStateListener() { 
 @Override 
 public void onInstallReferrerSetupFinished(int responseCode) {switch (responseCode) { 
         case InstallReferrerClient.InstallReferrerResponse.OK: 
             Log.i(TAG, "connect ads kit ok"); 
             get(); 
             break; 
         case InstallReferrerClient.InstallReferrerResponse.FEATURE_NOT_SUPPORTED: 
             // 服务不反对,请下载并装置最新版本的 HMS Core(APK)Log.i(TAG, "FEATURE_NOT_SUPPORTED"); 
             break; 
         case InstallReferrerClient.InstallReferrerResponse.SERVICE_UNAVAILABLE: 
             // 服务不可用,请将 HMS Core(APK)版本升级到 2.6.5 及以上 
             Log.i(TAG, "SERVICE_UNAVAILABLE"); 
             break; 
         default: 
             Log.i(TAG, "responseCode:" + responseCode); 
             break; 
     } 
 } 
 
 @Override 
 public void onInstallReferrerServiceDisconnected() {Log.i(TAG, "onInstallReferrerServiceDisconnected"); 
 } 
};

2. 在连贯胜利的回调中调用 getInstallReferrer 办法获取转化跟踪参数。

/** 
* 获取转化跟踪参数 
*/ 
private void get() {if (null != mReferrerClient) { 
     try { 
         // 获取 referrerDetails 实例,不要在主线程中调用此办法 
         ReferrerDetails referrerDetails = mReferrerClient.getInstallReferrer(); 
         if (null != referrerDetails && null != mCallback) { 
             // 更新数据 
             mCallback.onSuccess(referrerDetails.getInstallReferrer(), 
                     referrerDetails.getReferrerClickTimestampMillisecond(), 
                     referrerDetails.getInstallBeginTimestampMillisecond()); 
         } 
     } catch (RemoteException e) {Log.i(TAG, "getInstallReferrer RemoteException:" + e.getMessage()); 
     } catch (IOException e) {Log.i(TAG, "getInstallReferrer IOException:" + e.getMessage()); 
     } finally {disconnect(); 
     } 
 } 
}

创立 InstallReferrerClient 实例
通过 builder 配置和创立一个 InstallReferrerClient 实例。
1. 调用 InstallReferrerClient.newBuilder 创立一个 Builder 实例。
2. 调用 build 创立 InstallReferrerClient 实例。

mReferrerClient = InstallReferrerClient.newBuilder(mContext).build();

连贯转化跟踪参数服务
建设与转化跟踪参数服务的连贯。
1. 设置 startConnection 的监听器为已创立的 InstallReferrerStateListener 监听器。
2. 在子线程中调用 startConnection 办法连贯服务。

mReferrerClient.startConnection(installReferrerStateListener);

二、集成转化跟踪参数凋谢能力(AIDL 形式)

除了接入 SDK 以外,广告主也能够间接调用华为广告服务的 AIDL 接口获取华为设施上的转化跟踪参数,两种办法获取同一设施的转化跟踪参数是雷同的。

新增 AIDL 接口文件
在工程 ”app/src/main/aidl/com/huawei/android/hms/ppskit/” 门路中新增一个 ”IPPSChannelInfoService.aidl” 接口文件,包名为 ”com.huawei.android.hms.ppskit”,而后将上面内容拷贝到该接口文件中。

// IPPSRemoteService.aidl 
 package com.huawei.android.hms.ppskit; 
 /* 
  * 留神:不要批改 AIDL 文件的办法程序 
  */ 
 interface IPPSChannelInfoService {String getChannelInfo(); 
 }

创立一个类,实现 ServiceConnection 接口

1. 实现 ServiceConnection 的 onServiceConnected 办法。
2. 调用 IPPSChannelInfoService.Stub.asInterface 办法获取 IPPSChannelInfoService。
3. 调用 getChannelInfo 办法获取转化跟踪参数。

private final class InstallReferrerServiceConnection implements ServiceConnection {private InstallReferrerServiceConnection() { } 
 
     @Override 
     public void onServiceConnected(ComponentName componentName, IBinder iBinder) {Log.i(TAG, "onServiceConnected"); 
         mService = IPPSChannelInfoService.Stub.asInterface(iBinder); 
         if (null != mService) { 
             try { 
                 // 获取渠道信息(Json 格局)String channelJson = mService.getChannelInfo(); 
                 Log.i(TAG, "channelJson:" + channelJson); 
                 // 解析 
                 JSONObject jsonObject = new JSONObject(channelJson); 
                 // 获取转化跟踪参数 
                 String installReferrer = jsonObject.optString("channelInfo"); 
                 long clickTimestamp = jsonObject.optLong("clickTimestamp", 0); 
                 long installTimestamp = jsonObject.optLong("installTimestamp", 0); 
                 if (null != mCallback) { 
                     // 更新数据 
                     mCallback.onSuccess(installReferrer, clickTimestamp, installTimestamp); 
                 } else {mCallback.onFail("install referrer is empty"); 
                 } 
             } catch (RemoteException e) {Log.e(TAG, "getChannelInfo RemoteException"); 
                 mCallback.onFail(e.getMessage()); 
             } catch (Exception e) {Log.e(TAG, "getChannelInfo Exception"); 
                 mCallback.onFail(e.getMessage()); 
             } finally {unbindService(); 
             } 
         } 
     } 
 
     @Override 
     public void onServiceDisconnected(ComponentName componentName) {Log.i(TAG, "onServiceDisconnected"); 
         mService = null; 
     } 
 }

连贯转化跟踪参数的 AIDL 服务
1. 创立一个 InstallReferrerServiceConnection 实例。
2. 创立一个 Intent,Action 是 ”com.huawei.android.hms.CHANNEL_SERVICE”。
3. 设置 Intent 的包名为 ”com.huawei.hwid”。
4. 调用 bindService 连贯转化跟踪参数的 AIDL 服务

private boolean bindService() {Log.i(TAG, "bindService"); 
     if (null == mContext) {Log.e(TAG, "context is null"); 
         return false; 
     } 
     mServiceConnection = new InstallReferrerServiceConnection(); 
     Intent intent = new Intent(Constants.SERVICE_ACTION); 
     intent.setPackage(Constants.SERVICE_PACKAGE_NAME); 
     // 绑定服务 
     boolean result = mContext.bindService(intent, mServiceConnection, Context.BIND_AUTO_CREATE); 
     Log.i(TAG, "bindService result:" + result); 
     return result; 
 }

断开转化跟踪参数的 AIDL 服务
应用完 AIDL 接口后,应该被动断开服务连贯。

private void unbindService() {Log.i(TAG, "unbindService"); 
     if (null == mContext) {Log.e(TAG, "context is null");     
         return; 
     } 
     if (null != mServiceConnection) { 
         // 解绑服务 
         mContext.unbindService(mServiceConnection); 
         mService = null; 
         mContext = null; 
         mCallback = null; 
     } 
 }

三、接入单机测试
实现上述获取转化跟踪参数业务代码的补全后,就能够进行编译,实现编译后,生成 APK 装置并运行。提供了相干 Demo, 能够在端侧生成转化跟踪参数,供测试应用。

批改 App 用于测试转化跟踪参数。
SDK 形式:在创立 InstallReferrerClient 时设置为测试模式,调用 setTest(true),示例代码如下所示:

mReferrerClient = InstallReferrerClient.newBuilder(mContext).setTest(true).build(); 
mReferrerClient.startConnection(installReferrerStateListener);

AIDL 形式:在测试时设置绑定的 AIDL 服务的包名为 ”com.huawei.pps.hms.test”,示例代码如下所示:

mServiceConnection = new InstallReferrerServiceConnection(); 
Intent intent = new Intent(Constants.SERVICE_ACTION); 
intent.setPackage(Constants.TEST_SERVICE_PACKAGE_NAME); 
boolean result = mContext.bindService(intent, mServiceConnection, Context.BIND_AUTO_CREATE); 
Log.i(TAG, "bindService result:" + result);

将工程编译生成 APK 文件,并将 APK 文件装置到设施。运行 App,显示如下页面。

点击 ” 写入测试转化跟踪参数 ”,界面将跳转到如下图所示页面,输出的 App 包名(参见 ”AndroidManifest.xml”)和转化跟踪参数,并保留。

四、产品联调

失去转化跟踪参数后,须要登录华为广告平台将广告跟踪参数和推广工作分割起来
1. 广告主 App 集成转化跟踪参数后,上架华为利用市场。
2. 在华为广告投放平台创立推广工作时,设置转化跟踪参数,如下图所示:

3. 读取转化跟踪参数。广告主 App 被激活时,将会读取转化跟踪参数,并上报信息到开发者制订剖析平台。

欲了解更多详情

拜访华为广告服务官网
获取华为广告服务开发领导文档
华为广告服务开源仓库地址:GitHub、Gitee
华为 HMS Core 官方论坛 
解决集成问题请到 Stack Overflow

关注咱们,第一工夫理解 HMS Core 最新技术~

退出移动版