在写这篇文章的时候,我只能说自己是个菜鸟,接了一天多才弄好,多盟的官方文档,真的坑死了,是java的,我用c++和cocos写的,刚开始按照他们的文档一步来,广告是显示出来了,不过显示出来后把我的应用界面给全屏覆盖了,问了他们的客服只给我说他们的sdk没有问题,........只能靠自己了,摸索了半天,算是弄好了,前提是你按照文档加入一些必要的配置,完事直接上代码。
public static Handler handle;
private static RelativeLayout bannerLayout;
InterstitialAd mInterstitialAd;
protected AdView mAdview;
然后在oncreate中写入:
//广告条
bannerLayout = new RelativeLayout(this);
RelativeLayout.LayoutParams layout = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
this.addContentView(bannerLayout, layout);
//插屏
mInterstitialAd = new InterstitialAd(AppActivity.this, AppActivity.PUBLISHER_ID,
AppActivity.InterstitialPPID);
mInterstitialAd.setInterstitialAdListener(new InterstitialAdListener() {
@Override
public void onInterstitialAdReady() {
Log.i("DomobSDKDemo", "onAdReady");
}
@Override
public void onLandingPageOpen() {
Log.i("DomobSDKDemo", "onLandingPageOpen");
}
@Override
public void onLandingPageClose() {
Log.i("DomobSDKDemo", "onLandingPageClose");
}
@Override
public void onInterstitialAdPresent() {
Log.i("DomobSDKDemo", "onInterstitialAdPresent");
}
@Override
public void onInterstitialAdDismiss() {
// Request new ad when the previous interstitial ad was closed.
mInterstitialAd.loadInterstitialAd();
Log.i("DomobSDKDemo", "onInterstitialAdDismiss");
}
@Override
public void onInterstitialAdFailed(ErrorCode arg0) {
Log.i("DomobSDKDemo", "onInterstitialAdFailed");
}
@Override
public void onInterstitialAdLeaveApplication() {
Log.i("DomobSDKDemo", "onInterstitialAdLeaveApplication");
}
@Override
public void onInterstitialAdClicked(InterstitialAd arg0) {
Log.i("DomobSDKDemo", "onInterstitialAdClicked");
}
});
mInterstitialAd.loadInterstitialAd();
handle = new Handler() {
public void handleMessage(Message msg) {
switch(msg.what)
{
case 0:
{
//startActivity(new Intent(AppActivity.this, BannerAdActivity.class));
mAdview = new AdView(AppActivity.this, AppActivity.PUBLISHER_ID, AppActivity.InlinePPID);
mAdview.setKeyword("game");
mAdview.setUserGender("male");
mAdview.setUserBirthdayStr("2000-08-08");
mAdview.setUserPostcode("123456");
mAdview.setAdEventListener(new AdEventListener() {
@Override
public void onAdOverlayPresented(AdView adView) {
Log.i("DomobSDKDemo", "overlayPresented");
}
@Override
public void onAdOverlayDismissed(AdView adView) {
Log.i("DomobSDKDemo", "Overrided be dismissed");
}
@Override
public void onAdClicked(AdView arg0) {
Log.i("DomobSDKDemo", "onDomobAdClicked");
}
@Override
public void onLeaveApplication(AdView arg0) {
Log.i("DomobSDKDemo", "onDomobLeaveApplication");
}
@Override
public Context onAdRequiresCurrentContext() {
return AppActivity.this;
}
@Override
public void onAdFailed(AdView arg0, ErrorCode arg1) {
Log.i("DomobSDKDemo", "onDomobAdFailed");
}
@Override
public void onEventAdReturned(AdView arg0) {
Log.i("DomobSDKDemo", "onDomobAdReturned");
}
});
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
layoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
bannerLayout.addView(mAdview, layoutParams);
}
break;
case 1:
{
注掉的这是插屏的代码
// if (mInterstitialAd.isInterstitialAdReady()){
// mInterstitialAd.showInterstitialAd(AppActivity.this);
// } else {
// Log.i("DomobSDKDemo", "Interstitial Ad is not ready");
// mInterstitialAd.loadInterstitialAd();
// }
onClickHideShow(); //关闭广告条
}
break;
case 2:
break;
case 3:
break;
case 4:
break;
}
}
};
}
//通过c++掉用下面的
public static void show() {
Message message = handle.obtainMessage();
message.what = 0;
handle.sendMessage(message);
}
public static void close(){
Message message = handle.obtainMessage();
message.what = 1;
handle.sendMessage(message);
}
public void onClickHideShow() {
if (mAdview != null) {
mAdview.setVisibility(mAdview.getVisibility() == View.VISIBLE ? View.GONE
: View.VISIBLE);
}
}
c++中的代码:
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
void GameScene::show()
{
CCLOG("start to showAD");
JniMethodInfo t;
bool isHave = JniHelper::getStaticMethodInfo(t,"cn/test/testing/AppActivity","show","()V");
CCLOG("isHave:%d",isHave);
if (isHave)
{
CCLOG("starting to showAD");
t.env->CallStaticVoidMethod(t.classID,t.methodID);
t.env->DeleteLocalRef(t.classID);
}
CCLOG("end showAD");
}