秒针移动广告监测指南(Android版)

Miaozhen Systems
Version 4.1



概述

本手册旨在说明如何正确集成秒针Android SDK进行广告监测。要对Android应用中广告行为进行监测,只需在您的Eclipse项目中加入秒针监测SDK,当应用中广告展示或被点击时调用SDK相关监测接口即可。 在本指南中,我们将示例的项目命名为AndroidSDKIntegrationExample。开发人员在实际操作时,请直接将说明中AndroidSDKIntegrationExample替换为您自己的项目名称。


History

Version Package Update Time Note MD5 Checksum
1.1 MZMonitor-SDK-Android-1.1.zip 2013-01-16 38a2229cd8552c592b08b1558bbb809a
2.0 Miaozhen_MobileMonitor_Android_SDK-2.0.zip 2013-06-17 接口更名及性能优化升级. 接口名reportAction改为adTrack并保持向前兼容 1776b7424816c6c0c7c22ae15e3b61f2
2.1 Miaozhen_MobileMonitor_Android_SDK-2.1.zip 2013-07-19 加入获取地理位置信息功能 a5d71323f2689011729572ef7bf715a3
2.2 Miaozhen_MobileMonitor_Android_SDK-2.2.zip 2013-08-15 优化升级 9a434ede162eda3b25718327f271de1b
2.3 Miaozhen_MobileMonitor_Android_SDK-2.3.zip 2013-11-25 修复SqliteDatabase操作bug, 修复sdk获取地理位置bug 3d552fb049fb6ad459d671424bcb9f54
3.0 Miaozhen_MobileMonitor_Android_SDK-3.0.zip 2014-06-30 支持多家第三方监测代码,兼容MMA China标准 d29acddef05370a7534a4a00dde5313d
3.1 Miaozhen_MobileMonitor_Android_SDK-3.1.zip 2014-08-29 性能优化 3577d4eca334b4dbf4a8a562ad29b55d
3.2 Miaozhen_MobileMonitor_Android_SDK-3.2.zip 2014-10-31 优化升级 0725694c7a6819fd6870e67a6270c6e7
3.4 Miaozhen_MobileMonitor_Android_SDK-3.4.zip 2016-02-29 删掉OpenUDID的获取接口,更改域名判断的bug,兼容Android 6.0 系统,增加日志开关 3b4be2166efb1e8ada174c37eea8518e
3.7 Miaozhen_MobileMonitor_Android_SDK-3.7.zip 2016-10-15 优化升级 21d73c3784274e8e431fc3b207c51524
3.8 Miaozhen_MobileMonitor_Android_SDK-3.8.zip 2017-10-10 修复获取位置信息时有一定概率crash的bug a9f03c198d826b3ed127624ac4941159
4.0 Miaozhen_MobileMonitor_Android_SDK-4.0.zip 2017-03-27 加入可见曝光监测功能 6552b392cfadaa8b0e1d76c848b8f027
4.0.1 Miaozhen_MobileMonitor_Android_SDK-4.0.1.zip 2017-05-27 性能优化 fcb0b5253bc7acecaaab1829a55e3d80
4.1.0 Miaozhen_MobileMonitor_Android_SDK-4.1.0.zip 2017-08-17 加入可见状态信息,加入中点监测,优化升级 ac3848b8fcc13abdfac6b4a4203f6b4a
4.1.1 Miaozhen_MobileMonitor_Android_SDK-4.1.1.zip 2017-09-12 支持视频全屏 2294f4747c9578ea7ddfab701672772a
4.1.2 Miaozhen_MobileMonitor_Android_SDK-4.1.2.zip 2017-10-20 增加vi和vh参数 2823956ce65c3ad2f84e4b88de867b9f
4.1.3 Miaozhen_MobileMonitor_Android_SDK-4.1.3.zip 2017-12-18 获取packagename b8c16a9ad262910ffdcfe67404623421
4.1.5 Miaozhen_MobileMonitor_Android_SDK-4.1.5.zip 2018-02-13 增加接口设置配置文件下载地址 cf186333d70238e176e0fd8266be6fb6
4.1.6 Miaozhen_MobileMonitor_Android_SDK-4.1.6.zip 2018-04-25 获取pacakgename中增加sdk版本号等信息 157d87a9ece3b218e1fe3d1418b71c57

NOTE:基于秒针普通曝光SDK进行升级,同时可支持普通曝光和可见曝光, 支持多家第三方监测代码, 兼容MMA China标准, 如果已经集成老版本的监测SDK, 建议在每次APP升级时可通过该页面的history信息查看秒针监测SDK是否发布新版本并及时更新为最新版本.


环境要求

SDK要求采用android 2.1或更高版本


集成步骤

SDK解压缩后的文件夹中包含一个JAR和一份README文件

1. 右键点击Eclipse中工程名"AndroidSDKIntegrationExample",选择Properties...。

2. 选择Build Path中的libraries,点击Add External JARs,选中解压缩后的JAR包。

3. SDK需要加入以下权限: 编辑 "AndroidSDKIntegrationExample"项目的manifest文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.company" 
    android:versionCode="1" android:versionName="1.0">

    <application android:icon="@drawable/icon" android:label="@string/app_name" 
        android:debuggable="true">
        <activity android:label="@string/app_name" android:name="AndroidSDKIntegrationExample">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

    <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" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
</manifest>
        

SDK接口

SDK实质为一个封装好的发送监测请求的工具包. 其本身并不会自动运行, 也不存在后台运行的情形, 更无法自动感知APP当前是否有相应的广告曝光或点击行为产生. 需要由APP主动调用SDK接口方能完成监测请求的上报. 监测请求发送完毕后SDK即退出运行.

NOTE: 在所有调用SDK接口的文件中都需要确保正确添加头文件 import com.miaozhen.mzmonitor.MZMonitor

接口列表

接口详情

adTrackDisplay(Context context, String trackingURL, View adView)

Display类型曝光接口, 当APP中某广告需要进行曝光监测时, 由APP调用该接口. 如传递adView则包含可见曝光监测功能, 若不需监测可见曝光需传递“null”.

public static long adTrackDisplay(Context context, String trackingURL, View adView)

Parameters

context
    参见Context

trackingURL
    广告对应的曝光监测代码

adView
    可见曝光监测时传入广告视图对象, 用来计算广告曝光面积和持续曝光时间. 普通曝光监测时传null.

Return

    可见曝光监测活动的id, 需要APP保存变量, 并在广告结束时作为调用adTrackStop接口的参数停止对广告的可见曝光监测. 普通曝光监测返回0, 无需处理.

Discussion

    trackingURL来源: 广告开始投放前, 由秒针为广告主需要监测的广告分配对应的曝光监测代码. 媒体需要将监测代码录入到其投放系统中并与广告保持一一对应的关系. 投放系统在响应APP发送的投放请求时, 不仅需要返回广告创意本身, 还需返回与广告对应的曝光监测代码. APP从中解析出广告以及对应监测代码, 并在后续相应广告曝光行为产生时调用adTrackDisplay接口, 将监测代码当作参数传给该接口.

    adview来源: 媒体投放系统在响应APP发送的投放请求时, 返回广告创意本身, APP需要将广告 对象所在的view作为参数传给该接口.

Related Sample Code
long trackId = 0;
HttpURLConnection connection = null;
try {
    trackId = MZMonitor.adTrackDisplay(context, trackingURL, adView);
} catch (Exception e) {
    Log.e("unhandled exception happened");

    URL url = new URL(trackingURL);
    connection = (HttpURLConnection) url.openConnection();
    if (connection != null) {
        connection.setUseCaches(false);
        connection.setInstanceFollowRedirects(true);
        connection.connect();
    }
} finally {
    if (connection != null) {
        connection.disconnect();
        connection = null;
    }
}

WARN:
    为防止运行时因未知异常抛错, 建议媒体在调用第三方SDK接口时进行保护性异常捕获. 出现异常时, 可通过非SDK的方式将监测请求发出. 这样既能防止抛错而导致APP崩溃, 同时也能避免因该问题而引发的数据GAP


adTrackVideo(Context context, String trackingURL, View adView, int playType)

Video类型曝光接口, 当APP中视频广告需要进行曝光监测时, 由APP在视频开始播放时调用该接口. 如传递adView则包含可见曝光监测功能,若不需监测可见曝光需传递“null”.

public static long adTrackVideo(Context context, String trackingURL, View adView, int playType)

Parameters

context
    参见Context

trackingURL
    广告对应的曝光监测代码

adView
    可见曝光监测时传入广告视图对象, 用来计算广告曝光面积和持续曝光时间. 普通曝光监测时传null.

playType
    视频播放类型, 1-自动播放, 2-手动播放, 0-无法识别.

Return

    可见曝光的监测id, 需要APP保存变量, 并在广告结束时作为调用adTrackStop接口的参数停止对广告的可见曝光监测. 普通曝光监测返回0, 无需处理.

Discussion

    trackingURL来源: 广告开始投放前, 由秒针为广告主需要监测的广告分配对应的曝光监测代码. 媒体需要将监测代码录入到其投放系统中并与广告保持一一对应的关系. 投放系统在响应APP发送的投放请求时, 不仅需要返回广告创意本身, 还需返回与广告对应的曝光监测代码. APP从中解析出广告以及对应监测代码, 并在后续相应广告曝光行为产生时调用adTrackVideo接口, 将监测代码当作参数传给该接口.

    adview来源: 媒体投放系统在响应APP发送的投放请求时, 返回广告创意本身, APP需要将广告对象所在的view作为参数传给该接口.

Related Sample Code
long trackId = 0;
HttpURLConnection connection = null;
try {
    int videoPlayType = 1;
    trackId = MZMonitor.adTrackVideo(context, trackingURL, adView, videoPlayType);
} catch (Exception e) {
    Log.e("unhandled exception happened");

    URL url = new URL(trackingURL);
    connection = (HttpURLConnection) url.openConnection();
    if (connection != null) {
        connection.setUseCaches(false);
        connection.setInstanceFollowRedirects(true);
        connection.connect();
    }
} finally {
    if (connection != null) {
        connection.disconnect();
        connection = null;
    }
}

WARN:
    为防止运行时因未知异常抛错, 建议媒体在调用第三方SDK接口时进行保护性异常捕获. 出现异常时, 可通过非SDK的方式将监测请求发出. 这样既能防止抛错而导致APP崩溃, 同时也能避免因该问题而引发的数据GAP


adTrackStop(long trackId)

display或video广告结束时停止可见曝光监测的接口. 用于手动停止可见曝光的监测, 例如当视频贴片广告已经播放完毕或切换到其他广告, 应调用此接口停止对可见曝光状态的监听. 普通曝光或点击不需调用该接口.

public static void adTrackStop(long trackId)

Parameters

trackId
    接口adTrackDisplay或adTrackVideo的返回值, 表示可见曝光监测活动的id.

Discussion

    可见曝光监测时需要调用, 普通曝光或点击监测时不需要.

Related Sample Code
MZMonitor.adTrackStop(trackId);

adTrack(Context context, String trackingURL)

旧版遗留接口, 仅支持非可见曝光和点击的监测. 建议曝光优先使用adTrackDisplay和adTrackVideo接口, 等同于adTrackDisplay(context, trackingURL, null) 或adTrackVideo(context, trackingURL, null, 0), 点击使用adTrackClick接口.

public static void adTrack(Context context, String trackingURL)

Parameters

context
    参见Context

trackingURL
    广告对应的曝光或点击监测代码


adTrackClick(Context context, String trackingURL)

当APP中某广告有点击行为产生时, 由APP调用该接口上报监测请求.

public static void adTrackClick(Context context, String trackingURL)

Parameters

context
    参见Context

trackingURL
    广告对应的点击监测代码

Discussion

    trackingURL来源: 广告开始投放前, 由秒针为广告主需要监测的广告分配对应的点击监测代码. 媒体需要将监测代码录入到其投放系统中并与广告保持一一对应的关系. 投放系统在响应APP发送的投放请求时, 不仅需要返回广告创意本身, 还需返回与广告对应的点击监测代码. APP从中解析出广告以及对应监测代码, 并在后续相应广告点击行为产生时调用adTrackClick接口, 将监测代码当作参数传给该接口.

Related Sample Code
HttpURLConnection connection = null;
try {
    MZMonitor.adTrackClick(context, trackingURL);
} catch (Exception e) {
    Log.e("unhandled exception happened");

    URL url = new URL(trackingURL);
    connection = (HttpURLConnection) url.openConnection();
    if (connection != null) {
        connection.setUseCaches(false);
        connection.setInstanceFollowRedirects(true);
        connection.connect();
    }
} finally {
    if (connection != null) {
        connection.disconnect();
        connection = null;
    }
}

WARN:
    为防止SDK运行时因未知异常抛错, 建议媒体在调用第三方SDK接口时进行保护性异常捕获. 出现异常时, 可通过非SDK的方式将监测请求发出. 这样既能防止因SDK抛错而导致APP崩溃, 同时也能避免因该问题而引发的数据GAP


retryCachedRequests(Context context)

重试缓存的监测请求.

public static void retryCachedRequests(Context context)

Parameters

context
    参见Context

Discussion

    SDK在网络状况不好或断网情况下会缓存发送失败的监测请求, 缓存的监测请求数据需要由APP主动调用该接口才会完成重试发送, SDK本身并不会主动尝试重发.

Related Sample Code
try {
    MZMonitor.retryCachedRequests(context);
} catch (Exception e) {
    Log.e("unhandled exception happened");
}

version()

当前SDK版本

public static void version()