Android iOS Unity JS API Media API 常见问题

横幅(Banner)广告

简介

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

权限等级:开放

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

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

Demo

文字链 图文描述 纯图片

主要API

加了删除线的方法即将废弃。

UnifiedBannerView

方法名 方法介绍
UnifiedBannerView(final Activity context, final String posID, final UnifiedBannerADListener listener) 构造函数
UnifiedBannerView(final Activity context, final String appID, final String appID, final String posID, final UnifiedBannerADListener listener) 构造函数
loadAD() 加载广告
destroy() 当不需要Banner广告实例时用于主动释放资源,调用后实例销毁,不可以再调用
setRefresh(int refresh) 设置刷新频率,为0或30~120之间的数字,单位为 s,0标识不自动轮播,默认30S
getECPMLevel() 获取本条广告实时的eCMP价格层级标签,每个层级标签对应线下预定的eCPM价格范围,成功返回一个包含数字的字符串,比如“1”,无权限调用该接口或后台异常会返回空字符串
getECPM() 获取本条广告实时的eCPM价格,单位是分;权限提示:调用此接口前,需要向优量汇运营接口人申请实时竞价权限,当无权限调用该接口时,SDK会返回错误码-1

UnifiedBannerADListener

方法名 方法介绍
onNoAD(AdError error) 广告加载失败,error 对象包含了错误码和错误信息
onADReceive() 广告加载成功回调,表示广告相关的资源已经加载完毕,Ready To Show
onADExposure() 当广告曝光时发起的回调
onADClicked() 当广告点击时发起的回调,由于点击去重等原因可能和平台最终的统计数据有差异
onADClosed() 当广告关闭时调用
onADLeftApplication() 由于广告点击离开 APP 时调用
onADOpenOverlay() 当广告打开浮层时调用,如打开内置浏览器、内容展示浮层,一般发生在点击之后
onADCloseOverlay() 浮层关闭时调用

接入注意事项

代码接入示例

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

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");
  }
}

Copyright © 1998 - 2020 Tencent Inc. All Rights Reserved.
腾讯公司 版权所有 | 加入优量汇