Bidding Android iOS JS Media API 常见问题

横幅(Banner)广告

简介

横幅广告,又名Banner广告,固定于app顶部、中部、底部、或其他位置,横向贯穿整个app页面;当用户与app互动时,Banner广告会停留在屏幕上,并可在一段时间后自动刷新。

权限等级:开放

适用场景:Banner广告展现场景非常灵活,常见的展现场景为:文章页末尾,详情页面底部,信息流顶部等

分类:Banner 广告分为文字链、纯图片和图文描述,具体种类可以在开发者平台进行选择

Demo

文字链 图文描述 纯图片

主要API

UnifiedBannerView

方法名 方法介绍
UnifiedBannerView(final Activity context, final String posID, final UnifiedBannerADListener listener) 构造函数
loadAD() 加载广告
destroy() 当不需要Banner广告实例时用于主动释放资源,调用后实例销毁,不可以再调用
setRefresh(int refresh) 设置刷新频率,为0或30~120之间的数字,单位为 s,0标识不自动轮播,默认30S
getECPMLevel() 获取本条广告实时的eCMP价格层级标签,每个层级标签对应线下预定的eCPM价格范围,成功返回一个包含数字的字符串,比如“1”,无权限调用该接口或后台异常会返回空字符串
getECPM() 获取本条广告实时的eCPM价格,单位是分
isValid() 广告是否有效,无效广告将无法展示
getExtraInfo() (4.410.1280新增)获取本条广告一些额外信息

UnifiedBannerADListener

方法名 方法介绍
onNoAD(AdError error) 广告加载或展示过程中出错,AdError中包含了错误码和错误描述,具体错误码内容可参考错误码部分
onADReceive() 广告加载成功回调,表示广告相关的资源已经加载完毕,Ready To Show
onADExposure() 当广告曝光时发起的回调
onADClicked() 当广告点击时发起的回调,由于点击去重等原因可能和平台最终的统计数据有差异
onADClosed() 当广告关闭时调用
onADLeftApplication() 由于广告点击离开 APP 时调用

接入注意事项

代码接入示例

详细内容请参考压缩包中的代码示例

public class UnifiedBannerActivity extends Activity implements OnClickListener,
    UnifiedBannerADListener {

  private static final String TAG = UnifiedBannerActivity.class.getSimpleName();
  ViewGroup bannerContainer;
  UnifiedBannerView bv;
  String posId;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_unified_banner);
    bannerContainer = (ViewGroup) this.findViewById(R.id.bannerContainer);
    ((EditText) findViewById(R.id.posId)).setText(Constants.UNIFIED_BANNER_POS_ID);
    this.findViewById(R.id.refreshBanner).setOnClickListener(this);
    this.findViewById(R.id.closeBanner).setOnClickListener(this);
    this.getBanner().loadAD();
  }

  @Override
  protected void onDestroy() {
    super.onDestroy();
    if (bv != null) {
      bv.destroy();
    }
  }

  private UnifiedBannerView getBanner() {
    String posId = getPosID();
    if( this.bv != null && this.posId.equals(posId)) {
      return this.bv;
    }
    if(this.bv != null){
      bannerContainer.removeView(bv);
      bv.destroy();
    }
    this.posId = posId;
    this.bv = new UnifiedBannerView(this, posId, this);
    bannerContainer.addView(bv, getUnifiedBannerLayoutParams());
    return this.bv;
  }

  /**
   *  Banner 规定banner宽高比应该为6.4:1 , 开发者可自行设置符合规定宽高比的具体宽度和高度值
   *
   * @return
   */
  private FrameLayout.LayoutParams getUnifiedBannerLayoutParams() {
    Point screenSize = new Point();
    getWindowManager().getDefaultDisplay().getSize(screenSize);
    return new FrameLayout.LayoutParams(screenSize.x,  Math.round(screenSize.x / 6.4F));
  }

  @Override
  public void onClick(View v) {
    switch (v.getId()) {
      case R.id.refreshBanner:
        doRefreshBanner();
        break;
      case R.id.closeBanner:
        doCloseBanner();
        break;
      default:
        break;
    }
  }

  private void doRefreshBanner() {
    DemoUtil.hideSoftInput(this);
    getBanner().loadAD();
  }

  private void doCloseBanner() {
    bannerContainer.removeAllViews();
    if (bv != null) {
      bv.destroy();
      bv = null;
    }
  }

  private String getPosID() {
    String posId = ((EditText) findViewById(R.id.posId)).getText().toString();
    return TextUtils.isEmpty(posId) ? Constants.BannerPosID : posId;
  }

  @Override
  public void onNoAD(AdError adError) {
    String msg = String.format(Locale.getDefault(), "onNoAD, error code: %d, error msg: %s",
        adError.getErrorCode(), adError.getErrorMsg());
    Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
  }

  @Override
  public void onADReceive() {
    Log.i(TAG, "onADReceive");
  }

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

  @Override
  public void onADClosed() {
    Log.i(TAG, "onADClosed");
  }

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

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

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

  @Override
  public void onADCloseOverlay() {
    Log.i(TAG, "onADCloseOverlay");
  }
}

 文档反馈

腾讯公司 版权所有