美文网首页我爱编程
cocos2dx 3.x android studio 添加广点

cocos2dx 3.x android studio 添加广点

作者: 勿忘初心小同学 | 来源:发表于2018-07-26 13:31 被阅读0次

    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 添加广点

        本文链接:https://www.haomeiwen.com/subject/lmqbmftx.html