studio接入广点通原生模板广告

前言:产品让接个广告,之前没听说过,查了一下,看完文档,跟客服聊了聊。现状是:目前广点通不接受自渲染模式的广告,只能接入模板形式的。而自渲染和模板的代码是不一样的,需要注意。 

  1. 注册地址:联盟开发者门户
  2. 流量合作——我的媒体——新建媒体
  3. 流量合作——我的广告位——新建广告位(对照示意图,建自己需要的类型)
  4.  下载中心——SDK下载(这里有开发文档还是挺不错的,该有的都有了,自己看细节。具体代码可参照demo,由于代码是eclipse的,所以这里记录下studio的写法)

     

  1. 以原生模板为例: 
    private NativeExpressAD nativeExpressAD;
    private NativeExpressADView nativeExpressADView;

    public void refreshAd(Activity mContext) {
        try {
            // 这里的Context必须为Activity
            nativeExpressAD = new NativeExpressAD(mContext, getMyADSize(), Constants.APPID, Constants.NativePosID, new NativeExpressAD.NativeExpressADListener() {
                @Override
                public void onNoAD(AdError adError) {
                    Log.i(
                            TAG,
                            String.format("onNoAD, error code: %d, error msg: %s", adError.getErrorCode(),
                                    adError.getErrorMsg()));
                }

                @Override
                public void onADLoaded(List<NativeExpressADView> adList) {
                    Log.i(TAG, "onADLoaded: " + adList.size());
                    // 释放前一个展示的NativeExpressADView的资源
                    if (nativeExpressADView != null) {
                        nativeExpressADView.destroy();
                    }

                    if (gdtAd.getVisibility() != View.VISIBLE) {
                        gdtAd.setVisibility(View.VISIBLE);
                    }

                    if (gdtAd.getChildCount() > 0) {
                        gdtAd.removeAllViews();
                    }

                    nativeExpressADView = adList.get(0);
                    Log.i(TAG, "onADLoaded, video info: " + getAdInfo(nativeExpressADView));
                    // 广告可见才会产生曝光,否则将无法产生收益。
                    gdtAd.addView(nativeExpressADView);
                    nativeExpressADView.render();
                }

                @Override
                public void onRenderFail(NativeExpressADView adView) {
                    Log.i(TAG, "onRenderFail");
                }

                @Override
                public void onRenderSuccess(NativeExpressADView adView) {
                    Log.i(TAG, "onRenderSuccess");
                }

                @Override
                public void onADExposure(NativeExpressADView adView) {
                    Log.i(TAG, "onADExposure");
                }

                @Override
                public void onADClicked(NativeExpressADView adView) {
                    Log.i(TAG, "onADClicked");
                }

                @Override
                public void onADClosed(NativeExpressADView adView) {
                    Log.i(TAG, "onADClosed");
                    // 当广告模板中的关闭按钮被点击时,广告将不再展示。NativeExpressADView也会被Destroy,释放资源,不可以再用来展示。
                    if (gdtAd != null && gdtAd.getChildCount() > 0) {
                        gdtAd.removeAllViews();
                        gdtAd.setVisibility(View.GONE);
                    }
                }

                @Override
                public void onADLeftApplication(NativeExpressADView adView) {
                    Log.i(TAG, "onADLeftApplication");
                }

                @Override
                public void onADOpenOverlay(NativeExpressADView adView) {
                    Log.i(TAG, "onADOpenOverlay");
                }

                @Override
                public void onADCloseOverlay(NativeExpressADView adView) {
                    Log.i(TAG, "onADCloseOverlay");
                }
            });
            nativeExpressAD.loadAD(1);
        } catch (NumberFormatException e) {
            Log.w(TAG, "ad size invalid.");
        }
    }

    private ADSize getMyADSize() {
        int w = ADSize.FULL_WIDTH;
        int h = ADSize.AUTO_HEIGHT;
        return new ADSize(w, h);
    }

    /**
     * 获取广告数据
     *
     * @param nativeExpressADView
     * @return
     */
    private String getAdInfo(NativeExpressADView nativeExpressADView) {
        AdData adData = nativeExpressADView.getBoundData();
        if (adData != null) {
            StringBuilder infoBuilder = new StringBuilder();
            infoBuilder.append("title:").append(adData.getTitle()).append(",")
                    .append("desc:").append(adData.getDesc()).append(",")
                    .append("patternType:").append(adData.getAdPatternType());
            return infoBuilder.toString();
        }
        return null;
    }


    /**
     * 在页面销毁时调用  destroy
     */
    public void cancleADView() {
        // 使用完了每一个NativeExpressADView之后都要释放掉资源
        if (nativeExpressADView != null) {
            nativeExpressADView.destroy();
        }
    }

这段代码可写在任意位置,只需传入activity就行;其中缺乏参数如下

    //广点通广告 要绑定
    private ViewGroup gdtAd;


    <!--广点通广告 在需要的xml中加入,位置随便放-->
    <FrameLayout
       android:id="@+id/gdt_ad"
       android:layout_width="match_parent"
       android:layout_height="wrap_content" />

    /**
     * 广点通常量
     */
    public static final String APPID = "110******"; // 广点通媒体id
    public static final String NativePosID = "707044********"; //广告位ID 左图右字

完成:

左图右字

双图双字

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值