简介

为了更好地支撑广告主在华为设备上进行应用推广, HUAWEI Ads Kit提供转化跟踪能力方便广告主进行广告转化渠道跟踪和转化效果分析。

转化跟踪参数开放能力

通过HUAWEI Ads Kit提供的转化跟踪参数,广告主可以全链条(曝光、点击、下载、安装、激活、注册、下单等)分析下载类广告的转化效果:

  1. 广告主APP集成Huawei Ads Kit获取转化跟踪参数能力并上架应用市场。
  2. 广告主在华为广告平台投放APP下载类广告,并设置转化跟踪参数。
  3. 媒体APP请求并展示广告主投放的广告。
  4. 用户在媒体APP上点击广告主投放的广告,用户可以选择并下载安装广告主APP。
  5. 应用市场(APP Market)将转化跟踪参数写入Huawei Ads Kit。
  6. 用户在端侧激活广告主APP时,App从Huawei Ads Kit获取转化跟踪参数。
  7. 广告主APP上报激活事件给三方监测平台,平台可使用转化跟踪参数分析APP转化效果。

您将建立什么

在这个Codelab中,您将学习APP接入HUAWEI Ads生态系统。

您将会学到什么

硬件要求

华为Android终端设备(手机、平板)。

软件要求

华为Android终端设备(手机、平板)上HMS Core版本在2.6.5及以上。
查看方法:设备上 设置-> 应用 –>应用管理 搜索HMS Core

下载并解压CodeLab_AdsInstallReferrer_Initial_Demo.zip

源码下载

使用Android Studio打开CodeLab_AdsInstallReferrer_Initial_Demo工程。

SDK方式是指通过HUAWEI Ads Kit提供的SDK接入开放能力,接入方式简单,推荐使用此方式。
1、集成SDK
步骤1 配置HUAWEI Ads SDK的maven仓地址。
打开Android Studio项目级build.gradle文件,在allprojects->repositories里面配置SDK的maven仓地址。

/CodeLab_AdsInstallReferrer_Initial_Demo/build.gradle

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

步骤2 配置依赖
打开子工程app下的build.gradle文件,在dependencies新增SDK的依赖。

/CodeLab_AdsInstallReferrer_Initial_Demo/app/build.gradle

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

步骤3 同步修改的文件

步骤 4 配置混淆脚本(必选)
/CodeLab_AdsInstallReferrer_Initial_Demo/app/proguard-rules.pro

-keep class com.huawei.hms.ads.** { *; } -keep interface com.huawei.hms.ads.** { *; }

2、创建转化跟踪参数状态监听器
实现InstallReferrerStateListener监听器接口的两个方法onInstallReferrerSetupFinishedonInstallReferrerServiceDisconnected,代码示例如下:
/CodeLab_AdsInstallReferrer_Initial_Demo/app/src/main/java/com/huawei/pps/hms/test/installreferrer/
InstallReferrerSdkUtil.java

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: Log.i(TAG, "FEATURE_NOT_SUPPORTED"); break; case InstallReferrerClient.InstallReferrerResponse.SERVICE_UNAVAILABLE: Log.i(TAG, "SERVICE_UNAVAILABLE"); break; default: Log.i(TAG, "responseCode: " + responseCode); break; } } @Override public void onInstallReferrerServiceDisconnected() { Log.i(TAG, "onInstallReferrerServiceDisconnected"); } };

在连接成功的回调中调用getInstallReferrer方法获取转化跟踪参数。
/CodeLab_AdsInstallReferrer_Initial_Demo/app/src/main/java/com/huawei/pps/hms/test/installreferrer/
InstallReferrerSdkUtil.java

private void get() { if (null != mReferrerClient) { try { ReferrerDetails referrerDetails = mReferrerClient.getInstallReferrer(); if (null != referrerDetails && null != mCallback) { mCallback.onSuccuss(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(); } } }

3、创建InstallReferrerClient实例
通过builder配置和创建一个InstallReferrerClient实例。
开发步骤:
步骤1 调用InstallReferrerClient.newBuilder创建一个Builder实例。
步骤2 调用build创建InstallReferrerClient实例。
/CodeLab_AdsInstallReferrer_Initial_Demo/app/src/main/java/com/huawei/pps/hms/test/installreferrer/
InstallReferrerSdkUtil.java

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

4、连接转化跟踪参数服务
建立与转化跟踪参数服务的连接,不要在主线程中调用该方法
开发步骤:
步骤1 设置startConnection的监听器为已创建的InstallReferrerStateListener监听器。
步骤2 在子线程中调用startConnection方法连接服务。
/CodeLab_AdsInstallReferrer_Initial_Demo/app/src/main/java/com/huawei/pps/hms/test/installreferrer/
InstallReferrerSdkUtil.java

mReferrerClient.startConnection(installReferrerStateListener);

1、新增AIDL接口文件
在工程中新增一个aidl接口文件,包名为com.huawei.android.hms.ppskit,文件名称为IPPSChannelInfoService.aidl,拷贝下面内容到文件中。
/CodeLab_AdsInstallReferrer_Initial_Demo/app/src/main/aidl/com/huawei/android/hms/ppskit/
IPPSChannelInfoService.aidl

// IPPSRemoteService.aidl package com.huawei.android.hms.ppskit; /* * Important: Do not modify the method sequence of the AIDL file. */ interface IPPSChannelInfoService { String getChannelInfo(); }

2、创建一个类,实现ServiceConnection接口。
开发步骤:
步骤1 实现ServiceConnectiononServiceConnected方法。
步骤2 调用IPPSChannelInfoService.Stub.asInterface方法获取IPPSChannelInfoService
步骤3 调用getChannelInfo方法获取转化跟踪参数。
/CodeLab_AdsInstallReferrer_Initial_Demo/app/src/main/java/com/huawei/pps/hms/test/installreferrer/
InstallReferrerAidlUtil.java

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 { 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.onSuccuss(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 Excepition"); mCallback.onFail(e.getMessage()); } finally { unbindService(); } } } @Override public void onServiceDisconnected(ComponentName componentName) { Log.i(TAG, "onServiceDisconnected"); mService = null; } }

3、连接转化跟踪参数的AIDL服务
开发步骤:
步骤1 创建一个InstallReferrerServiceConnection实例。
步骤2 创建一个Intent,Action是"com.huawei.android.hms.CHANNEL_SERVICE"。
步骤3 设置Intent的包名为"com.huawei.hwid"。
步骤4 调用bindService连接转化跟踪参数的AIDL服务。
CodeLab_AdsInstallReferrer_Initial_Demo/app/src/main/java/com/huawei/pps/hms/test/installreferrer/
InstallReferrerAidlUtil.java

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; }

4、断开转化跟踪参数的AIDL服务
使用完AIDL接口后,应该主动断开服务连接。
CodeLab_AdsInstallReferrer_Initial_Demo/app/src/main/java/com/huawei/pps/hms/test/installreferrer/
InstallReferrerAidlUtil.java

private void unbindService() { if (null != mServiceConnection) { unbindService(mServiceConnection); } }

准备一部华为手机,且"HMS Core"版本在2.6.5及以上。
1、修改您的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);

2、将CodeLab_AdsInstallReferrer_Initial_Demo工程编译生成apk文件,并将apk文件安装到设备。
3、运行APP,显示如下页面。

4、点击"写入测试转化跟踪参数",界面将跳转到如下图所示页面,输入您的APP包名(参见AndroidManifest.xml)和转化跟踪参数,并保存。

  1. 广告主APP集成转化跟踪参数后,上架华为应用市场。
  2. 在华为广告投放平台创建推广任务时,设置转化跟踪参数,如下图所示:
  3. 读取转化跟踪参数
    广告主APP被激活时,将会读取转化跟踪参数,并上报信息到开发者制定分析平台。

祝贺您,你已经成功完成了Codelab并学到了:

您可以阅读下面链接,了解更多相关的信息。

相关文档

您可以在Github上下载源码:github.com/Huawei/Consumer/tree/master/Codelabs/Ads-InstallReferrer

也可以点击下方按钮下载源码。

源码下载

已复制代码