cocos2d-x在android下添加插屏广告
最近做了一个小项目,需要在 Android 平台下添加插屏广告。我在网上搜索后,找到了添加方法。
需要说明的是,在 Android 平台下,如果想在聚合里使用插屏广告基本是不可行的。因为添加插屏广告时,有的是在 SDK 里已经写好,只需调用代码;有的则需要修改显示广告的视图或者 Context,所以直接使用聚合无法完全正确处理。不过,iOS 平台是个例外。下面详细介绍如何在应用里添加安沃的插屏广告。
步骤一:添加 SDK
添加 SDK 比较简单,直接将相关包复制到 libs 目录即可。
步骤二:在 Cocos2d-x 的 Activity 里添加代码
1. 添加广告监听接口
在 Java 代码中,让 appActivity 类继承 Cocos2dxActivity 并实现 FullScreenAdListener 接口:
public class appActivity extends Cocos2dxActivity implements FullScreenAdListener {
}
2. 声明需要用到的广告视图
private static AdDisplayer displayer;
3. 在 onCreate 方法里初始化并添加广告的类型设置,以及广告请求
// 请在 manifest 里面设置当前 activity 属性
// android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
// 全屏广告实例
displayer = AdDisplayer.getInstance(appActivity.this);
// 初始化全屏广告参数
displayer.initParems("5201f33630c542a0b851cb9325d744e2", true, appActivity.this);
// 设置全屏格式
/*
* 可选参数有:
* AdDisplayer.ADWO_FS_INTERCEPT 插屏全屏
* AdDisplayer.ADWO_FS_ENTRY
* AdDisplayer.ADWO_FS_TRANSPOSITION
*/
displayer.setDesireAdForm(AdDisplayer.ADWO_FS_INTERCEPT);
// 设置请求广告类型 可选
displayer.setDesireAdType(AdDisplayer.ADWO_FS_TYPE_ALL);
// 开始请求全屏广告
displayer.requestFullScreenAd();
需要注意的是,必须在要展示广告的 Activity 里添加如下属性:
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
否则无法将广告按照全屏进行展示。广告的类型可参考相关说明进行设置,同时要注意,在正式发布时,初始化方法的第二个参数不要使用 true,因为这是测试广告模式。
4. 实现回调方法
@Override
protected void onStart() {
super.onStart();
}
@Override
public void onReceiveAd() {
Log.e(LOG_TAG, "onReceiveAd");
// 接收到全屏广告。加载全屏广告并展示
displayer.preLoadFullScreenAd();
}
@Override
public void onLoadAdComplete() {
Log.e(LOG_TAG, "onLoadAdComplete");
// 成功完成下载后,展示广告
// layout = (RelativeLayout) findViewById(R.id.layout);
}
@Override
public void onFailedToReceiveAd(ErrorCode errorCode) {
Log.e(LOG_TAG, "onFailedToReceiveAd");
if (errorCode.getErrorCode() == 36) {
// 下载广告资源失败,此次广告无法显示
Log.e(LOG_TAG, "onFailedToReceiveAd downloading resources failed.");
}
}
@Override
public void onAdDismiss() {
// TODO 广告关闭回调接口
Log.e(LOG_TAG, "onAdDismiss");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.e(LOG_TAG, "onDestroy");
// 请在这里释放全屏广告资源
if (displayer != null) {
displayer.dismissDisplayer();
displayer = null;
}
}
步骤三:使用 JNI 调用显示广告的代码
为了更灵活地显示广告,我们可以使用 JNI 调用。以下是相关 Java 代码:
public static void showMyAD() {
displayer.displayFullScreenAd(mGLSurfaceView);
}
由于我们要把广告显示到 Cocos2d-x 的视图里,所以需要在 com.cocos2dx.lib 包下的 cocos2dxActivity.java 里修改声明:
protected static Cocos2dxGLSurfaceView mGLSurfaceView;
步骤四:在 manifest.xml 里添加相关设置
最后,在 manifest.xml 里添加显示点击广告的 Activity,并设置好权限,即可完成插屏广告的添加。
祝愿开发者们多赚 money!