Domob Native Ad
必要条件
Android 2.2
或更高版本
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.在NativeAdDataLoadListener
的onLoadSuccess
回调方法,获取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回调NativeAd
的destroy
方法
@Override
protected void onDestroy() {
super.onDestroy();
if (nativeAd != null) {
nativeAd.destroy();
nativeAd = null;
}
}