cocos2dx 3.x android studio 添加广点通广告

1,接入广告条

按照官方文档接入的时候遇到个问题,官方文档中是使用的布局文件来显示广告条,但是cocos2dx 没有使用布局文件,所以这里需要我们在代码中手动创建一个布局容器来显示广告条,代码如下:

// 声明一个容器
private static RelativeLayout bannerContainer;

//创建广告条容器
public static void createBanner()
{
    //创建广告条容器
    bannerContainer = new RelativeLayout(mActivity);
    RelativeLayout.LayoutParams parentLayoutParams = new RelativeLayout.LayoutParams(
        RelativeLayout.LayoutParams.WRAP_CONTENT,
        RelativeLayout.LayoutParams.WRAP_CONTENT);
    mActivity.addContentView(bannerContainer, parentLayoutParams);


    // 创建Banner广告AdView对象
    // appId : 在 http://e.qq.com/dev/ 能看到的app唯一字符串
    // posId : 在 http://e.qq.com/dev/ 生成的数字串,并非 appid 或者 appkey
    mBannerView = new BannerView(mActivity,
        ADSize.BANNER,
        mActivity.getResources().getString(R.string.gdt_appid),
        mActivity.getResources().getString(R.string.gdt_banner_postid));
    //设置广告轮播时间,为0或30~120之间的数字,单位为s,0标识不自动轮播
    mBannerView.setRefresh(30);
    mBannerView.setADListener(new AbstractBannerADListener() 
    {
        @Override
        public void onNoAD(AdError adError)
        {
            Log.i("GDT_AD", "BannerNoAD,eCode=" + adError.getErrorCode());
        }

        @Override
        public void onADReceiv()
        {
            Log.i("GDT_AD", "ONBannerReceive");
        }
    });

    bannerContainer.addView(mBannerView);
    mBannerView.loadAD();
 }

然后在这个bannerContainer里面addview广告条view。
显示的时候直接创建,不显示的时候就销毁

mBannerView.destroy();

2.接入插屏广告

这里需要注意的是创建插屏广告view之后需要load一次广告

public static void createInterstitialAD()
{
    mInterstitialAD = new InterstitialAD(mActivity,
        mActivity.getResources().getString(R.string.gdt_appid),
        mActivity.getResources().getString(R.string.gdt_interteristal_postid));
    mInterstitialAD.setADListener(new AbstractInterstitialADListener() 
    {
        @Override
        public void onADReceive()
        {
            Log.i("GDT_AD", "LoadInterstitialAd SUCCESS");
        }

        @Override
        public void onNoAD(AdError adError) 
        {
            Log.i("GDT_AD", String.format("LoadInterstitialAd Fail, error code: %d, error msg: %s", adError.getErrorCode(), adError.getErrorMsg()));
        }
    });
    //初始化必须加载一次广告
    mInterstitialAD.loadAD();
}

请注意:从cocos2dx通过jnihelper调用到java函数的时候一定要在ui线程中显示广告条或者插屏广告,不然程序可能会崩掉

public static void showBanner()
{
    Log.i("GDT_AD","show banner");
    //在UI线程中显示广告条
    mActivity.runOnUiThread(new Runnable() 
    {
        @Override
        public void run() 
        {
            createBanner();
        }
    });
}

你可能感兴趣的:(cocos2dx 3.x android studio 添加广点通广告)