banner广告

简介

Banner广告为一张图片的View,此View的宽高默认为match_parent,用户可以自行定义宽高或通过设置父布局的宽高的方式来限定Banner广告的大小(注:Banner广告的宽高请尽量与adSlot中设置的宽高比例接近,以避免过多非等比例的拉伸)。

注意事项

①在广告接入前需要明确各ADN对应广告样式情况,以确保正确完成广告接入,避免由于广告类型不匹配导致接入报错等情况的发生。

②由于各广告平台对于包名校验规则不同,需确保在平台填写的包名符合各adn平台规范,避免由于包名校验不匹配导致的无广告返回情况的产生。

③广告请求时机,建议在收到SDK初始化成功回调后发起广告请求,当SDK初始化回调一直失败时,建议首先明确应用ID及广告位ID是否赋值正确、是否有多余空格、是否是网络不稳定导致的超时等,当排查后无法定位问题时,建议通过抓包将config字段下的加密内容提供过来,我方协助定位问题。

接入Banner广告

一、创建AdView对象

AdView bannerView = AdView(this, requestConfig)

二、创建广告请求CloooudAdSlot

 val requestConfig: AdRequestConfig = AdRequestConfig.Builder()
            .AdType(AdConfig.AD_TYPE_BANNER)
            .slotId("****") //广告场景id
            .widthDp(CommonDeviceInfo.getScreenSizeInDp(applicationContext)[0])
            .heightDp(0)//0为自适应
            .bannerInterval(0)//轮播时间 默认0
            .showDownloadConfirmDialog(isShowDownloadConfirmDialog)//是否展示下载弹出框
            .build()

三、请求广告

   bannerView!!.setListener(object : AdViewListener {
            override fun onAdClick() {
            }

            override fun onAdFailed(arg0: String) {
                removeAdIfNecessary()
            }

            override fun onAdReady() {
            }

            override fun onAdShow(cAdInfo: CAdInfo?) {
            }

            override fun onAdDismissed(s: String?) {
                removeAdIfNecessary()
            }
        })
        container?.removeAllViews()
        container?.addView(bannerView)

四、展示广告

    container?.addView(bannerView)

五、销毁广告

  protected void onDestroy() {
    super.onDestroy();
   if (bannerView != null) {
            bannerView.onDestroyAd() //回收广告
        }
  }

接口说明

AdRequestConfig.Builder说明

方法名 说明
AdType(int adType) 设置请求广告类型
slotId(String slotId) 设置广告位id
widthDp(int width) 是否广告宽度
heightDp(int height) 设置广告高度
bannerInterval(int interval) 设置轮播时间,默认0
String getScenarioId() 广告场景ID
showDownloadConfirmDialog(boolean isShowDownloadDialog) 设置是否弹出下载弹框

AdViewListener 说明

广告加载回调

方法名 说明
void onAdReady() 广告请求成功
void onAdFailed(String error) 广告物料、素材加载失败或超时回调
void onAdShow(CAdInfo ad) 广告渲染成功
void onAdClick() 广告点击回调
void onAdDismissed(String s) 广告关闭回调
###CAdInfo 说明
方法名 说明
int getNetworkFirmId() 返回竞价成功广告网络ID
String getAdsourceId() 返回竞价成功广告源ID
double getEcpm() 返回竞价成功价格
##示例代码

class BannerActivity : AppCompatActivity() {

var container: RelativeLayout? = null
var showBanner: Button? = null
var refreshBanner: android.widget.Button? = null
var bannerView: AdView? = null
private var isShowDownloadConfirmDialog = false

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_banner)
    isShowDownloadConfirmDialog =
        SharedPreferencesUtils.getParam(this, "isShowDownloadConfirmDialog", true) as Boolean
    showBanner = findViewById(R.id.showBannerAd)
    refreshBanner = findViewById(R.id.refreshBannerAd)
    container = findViewById(R.id.bannerContainer)
    showBanner!!.setOnClickListener { showNormalBanner() }
    refreshBanner!!.setOnClickListener {

// if (bannerView != null) { // bannerView.refreshBannerNow();//调用后立即刷新横幅广告 // } showNormalBanner() Handler(Looper.getMainLooper()).postDelayed({ finish() }, 200) } }

// 普通banner
private fun showNormalBanner() {
    val requestConfig: AdRequestConfig = AdRequestConfig.Builder()
        .AdType(AdConfig.AD_TYPE_BANNER)
        .slotId("2323540") //广告场景id
        .widthDp(CommonDeviceInfo.getScreenSizeInDp(applicationContext)[0])
        .heightDp(0)//0为自适应
        .bannerInterval(0)//轮播时间 默认0
        .showDownloadConfirmDialog(isShowDownloadConfirmDialog)//是否展示下载弹出框
        .build()
    bannerView = AdView(this, requestConfig)
    bannerView!!.setListener(object : AdViewListener {
        override fun onAdClick() {
            Log.d("CLOOOUDAD", "banner onAdClick: ")
        }

        override fun onAdFailed(arg0: String) {
            Log.d("CLOOOUDAD", "banner onAdFailed  $arg0")
            removeAdIfNecessary()
        }

        override fun onAdReady() {
            Log.d("CLOOOUDAD", "banner onAdReady")
        }

        override fun onAdShow(cAdInfo: CAdInfo?) {
            Log.e("CLOOOUD_POLY", "ecpm: " + cAdInfo?.ecpm)
            Log.d("CLOOOUDAD", "banner onAdShow")
        }

        override fun onAdDismissed(s: String?) {
            Log.d("CLOOOUDAD", "banner onAdDismissed")
            removeAdIfNecessary()
        }
    })
    container?.removeAllViews()
    container?.addView(bannerView)
}

override fun onDestroy() {
    if (bannerView != null) {
        bannerView?.onDestroyAd() //回收广告
    }
    super.onDestroy()
}

/**
 * 移除广告
 */
private fun removeAdIfNecessary() {
        container?.removeAllViews()
        bannerView?.onDestroyAd() //回收广告
}

}