Domob Native Ad

必要条件

DMNativeAd的后台设置

使用本地原生广告(Native Ad)

Native广告模式是向开发者提供广告数据,由开发者手动将广告数据布局到自己应用的界面的广告模式。

本地原生广告的使用,需要以下几步:

1.将SDK的发行包(一个war文件)解压缩,将目录下的domob_android_native_sdk.jar添加到项目中。

2.将SDK需要的权限添加到AndroidManifest.xml清单文件中,所需的权限如下:

        <!-- 网络访问权限 -->
        <uses-permission android:name="android.permission.INTERNET" />
        <!-- 获取网络信息状态,如当前的网络连接是否有效 -->
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <!-- 读取手机状态 -->
        <uses-permission android:name="android.permission.READ_PHONE_STATE" />
        <!-- 允许程序写入外部存储,如SD卡上写文件 -->
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <!-- 获取错略位置 -->
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
        <!-- 获取WiFi状态 -->
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
        <!-- 震动权限为可选权限,主要是品牌广告会用到,如果您没有添加,需要这些效果的品牌广告将不会投放到您的应用上 -->
        <uses-permission android:name="android.permission.VIBRATE" />

3.将SDK需要的Activity声明添加到AndroidManifest.xml清单文件中,所需的Activity声明如下:

<activity
            android:name="cn.domob.android.common.DmNativeActivity"
            android:theme="@android:style/Theme.Translucent" />

4.实现NativeAdDataLoadListener监听。

NativeAdDataLoadListener nativeAdDataLoadListener = new NativeAdDataLoadListener() {

            @Override
            public void onLoadSuccess(final NativeAdData nativeAdData) {
                // 广告标题
                tv_title.setText(nativeAdData.title);
                // 广告描述 字数限制是33-80字
                tv_description.setText(nativeAdData.description);
                // app 星级 , 范围 : 0-100
                tv_ratings.setText(nativeAdData.appRating+"");
                // 广告简介 字数限制是8-32字
                tv_brief.setText(nativeAdData.brief);
                // app 包大小, 单位为Byte
                tv_size.setText(nativeAdData.appSize+"");
                // 广告事件按钮的提示文字
                bt.setText(nativeAdData.clickActionText);
                // app 下载数
                tv_downloads.setText(nativeAdData.appDownloads+"");
                // 广告icon
                if (nativeAdData.iconInfo != null) {
                    // 图片URL
                    String iconUrl = nativeAdData.iconInfo.imageUrl;
                }
                // 广告大图
                if (nativeAdData.mainInfo != null) {
                    // 图片URL
                    String mainUrl = nativeAdData.mainInfo.imageUrl;
                }
            }

            @Override
            public void onLoadFail(String errorMessage) {
                mLogger.debugLog("onNativeFail :" + errorMessage);
            }

        };

4.使用您从多盟官网获得的Publisher ID、Placement ID、NativeAdDataLoadListener的实例以及当前的Activity,来初始化一个NativeAd的实例。

NativeAd nativeAd = new NativeAd(this, MainActivity.mPublisherID, MainActivity.mNativePPID, nativeAdDataLoadListener);

5.在合适的时候,调用loadNativeAd方法请求广告。

nativeAd.loadNativeAd();

6.在NativeAdDataLoadListeneronLoadSuccess回调方法,获取NativeAdData

@Override
public void onLoadSuccess(final NativeAdData nativeAdData) {
    // 广告标题
    tv_title.setText(nativeAdData.title);
    // 广告描述 字数限制是33-80字
    tv_description.setText(nativeAdData.description);
    // app 星级 , 范围 : 0-100
    tv_ratings.setText(nativeAdData.appRating+"");
    // 广告简介 字数限制是8-32字
    tv_brief.setText(nativeAdData.brief);
    // app 包大小, 单位为Byte
    tv_size.setText(nativeAdData.appSize+"");
    // 广告事件按钮的提示文字
    bt.setText(nativeAdData.clickActionText);
    // app 下载数
    tv_downloads.setText(nativeAdData.appDownloads+"");
    // 广告icon
    if (nativeAdData.iconInfo != null) {
        // 图片URL
        String iconUrl = nativeAdData.iconInfo.imageUrl;
    }
    // 广告大图
    if (nativeAdData.mainInfo != null) {
        // 图片URL
        String mainUrl = nativeAdData.mainInfo.imageUrl;
    }
}

7.将NativeAdData的数据展现到屏幕时,务必调用trackImpression方法,发送展现报告

nativeAd.trackImpression();

8.对于广告内的点击事件,需要调用handleAction方法处理

bt.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        if (nativeAd != null) {
            // 处理点击事件
            nativeAd.handleAction();
        } else {
            Toast.makeText(getApplicationContext(), "NativeData is null", Toast.LENGTH_SHORT).show();
        }
    }
});

9.清除占用资源,在Activity的onDestroy回调NativeAddestroy方法

@Override
protected void onDestroy() {
    super.onDestroy();
    if (nativeAd != null) {
        nativeAd.destroy();
        nativeAd = null;
    }
}