自研聚合

SDK 初始化

初始化接⼝调⽤⽅式有如下两种,初始化可以使用 快速初始化 动态初始化 其中的一种进行接入

快速初始化

  1. app/src/main.AndroidManifest.xml配置 BeesAds 平台的 App Id。

<manifest>
  <application>
    <meta-data
        android:name="com.bees.ads.sdk.APP_ID"
        android:value="应用 id" />
  </application>
</manifest>
  1. 调用初始化接口

BeesSdk.getInstance(context).initialize(new OnSdkInitializationListener());

参数说明如下:

参数名称

参数说明

context

上下文

listener

初始化监听器

代码示例:

BeesSdk.getInstance(context).initialize(new OnSdkInitializationListener() {
    @Override public void onInitializeSuccess() {
        // 初始化成功
    }

    @Override public void onInitializeFailed(@NonNull AdsError error) {
        // 初始化失败
    }
});

动态初始化

调用如下初始化接口:

BeesSdk getInstance(Context context, String appId).initialize(OnSdkInitializationListener listener)

参数说明如下:

参数名称

参数说明

context

上下文

appId

BeesAds 后台应用 id

listener

初始化监听器

代码示例:

BeesSdk.getInstance(this, "Your App Id").initialize(new OnSdkInitializationListener() {
    @Override public void onInitializeSuccess() {
        // 初始化成功
    }

    @Override public void onInitializeFailed(@NonNull AdsError sdkError) {
        // 初始化失败
    }
});

OnSdkInitializationListener 说明:

初始化回调接口

方法名称

方法说明

onInitializeSuccess()

SDK 初始化成功

onInitializeFailed(@NonNull AdsError adsError)

SDK 初始化失败

SDK 接口介绍

横幅广告

  1. 加载

BeesBannerAd bannerAdView = new BeesBannerAd(context);
bannerAdView.setListener(new BeesBannerAdListener());
bannerAdView.setAdSize(BannerSize.BANNER);
bannerAdView.setAdUnitId("«ad-unit-id»");
bannerAdView.loadAd();
  1. 大小

类型

说明

BannerSize.BANNER

标准横幅广告,尺寸:320x50

BannerSize.LARGE_BANNER

大号横幅广告,尺寸:320x100

BannerSize.MEDIUM_RECTANGLE

中矩形广告,尺寸:300x250

BannerSize.FULL_BANNER

全宽横幅广告,适合平板设备,尺寸:468x60

BannerSize.LEADERBOARD

超宽横幅广告,适合平板设备,尺寸:728x90

  1. 展示

ViewGroup rootView = findViewById(android.R.id.content)
rootView.addView(bannerAdView)
  1. 回调

bannerAdView.setListener(new BeesBannerAdListener() {
    @Override public void onAdLoaded() {
        // 广告加载成功
    }

    @Override public void onAdLoadFailed(@NonNull AdsError adsError) {
        // 广告加载失败
    }

    @Override public void onAdDisplayed() {
        // 广告展示成功
    }

    @Override public void onAdDisplayFailed(@NonNull AdsError adsError) {
        // 广告展示失败
    }

    @Override public void onAdImpression() {
        // 广告曝光回调
    }

    @Override public void onAdClicked() {
        // 广告被点击
    }

    @Override public void onAdHidden() {
        // 广告被隐藏
    }
});
  1. 销毁

public class ExampleActivity extends Activity {
    
    @Override protected void onDestroy() {
        if (bannerAdView != null) {
            bannerAdView.destroy();
            bannerAdView = null;
        }
        super.onDestroy();
    }
}
  1. 示例

public class ExampleActivity extends Activity implements BeesAdListener {

    @Nullable
    private BeesBannerAd mBannerAd;

    private void createBannerAd() {
        mBannerAd = new BeesBannerAd(this);
        mBannerAd.setAdSize(BannerSize.BANNER);
        mBannerAd.setAdUnitId("«ad-unit-id»");
        mBannerAd.setListener(this);
        mBannerAd.loadAd();
    }

    @Override protected void onPause() {
        if (mBannerAd != null) {
            mBannerAd.pause();
        }
        super.onPause();
    }

    @Override protected void onResume() {
        super.onResume();
        if (mBannerAd != null) {
            mBannerAd.resume();
        }
    }

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

    @Override public void onAdLoaded() {

    }

    @Override public void onAdLoadFailed(@NonNull AdsError adsError) {

    }

    @Override public void onAdDisplayed() {

    }

    @Override public void onAdDisplayFailed(@NonNull AdsError adsError) {

    }

    @Override public void onAdImpression() {

    }

    @Override public void onAdClicked() {

    }

    @Override public void onAdHidden() {

    }
}

原生广告

  1. 加载

BeesNativeAdLoader.load(this, "«ad-unit-id»", new NativeAdLoadCallback() {
    @Override public void onAdLoaded(@NonNull BeesNativeAd beesNativeAd) {
      // 广告加载成功
    }

    @Override 
    public void onAdLoadFailed(@NonNull AdsError error) {
       // 广告加载失败
    }
});
  1. 监听

if (nativeAdLoader != null && nativeAdLoader.isReady()) {
    nativeAdLoader.setAdListener(new BeesNativeAdListener());
}

BeesNativeAdListener 说明:

原生广告监听器

方法名称

方法说明

onAdDisplayFailed(@NonNull AdsError adsError)

广告展示失败

onAdImpression()

广告曝光回调

onAdClicked()

广告点击回调

  1. 展示

    1. 创建原生广告视图层级

      <?xml version="1.0" encoding="utf-8"?>
      <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="https://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
      
        <ImageView
          android:id="@+id/native_id_icon"
        … />
        <TextView
          android:id="@+id/native_id_title"
        … />
        <RatingBar
          android:id="@+id/native_id_star"
        … />
        <TextView
          android:id="@+id/native_id_advertiser"
        … />
        <TextView
          android:id="@+id/native_id_body"
        … />
        <FrameLayout
          android:id="@+id/native_layout_media"
        … />
        <Button
          android:id="@+id/native_id_cta"
        … />
      </androidx.constraintlayout.widget.ConstraintLayout>
    2. 显示广告并绑定原生广告控件

      if (nativeAdLoader != null && nativeAdLoader.isReady()) {
          nativeAdLoader.showAd(adContainerViewGroup, new BeesNativeViewBinder(nativeAdView));    
      }       
  2. 销毁

if (mNativeAdLoader != null) {
    mNativeAdLoader.destroy();
    mNativeAdLoader = null;
}
  1. 示例

public class ExampleActivity extends Activity implements BeesNativeAdListener {

    @Nullable
    private BeesNativeAdLoader mNativeAdLoader;

    private int mRetryAttemptCount = 0;

    private void loadNativeAd() {
        mNativeAdLoader = BeesNativeAdLoader.load(this, "«ad-unit-id»", new NativeAdLoadCallback() {
            @Override public void onAdLoaded(@NonNull BeesNativeAd beesNativeAd) {
                mRetryAttemptCount = 0;

                showNativeAd(beesNativeAd);
            }

            @Override public void onAdLoadFailed(@NonNull AdsError error) {
                mRetryAttemptCount++;

                long delayMillis = TimeUnit.SECONDS.toMillis((long) Math.pow(2, Math.min(6, mRetryAttemptCount)));

                new Handler().postDelayed(new Runnable() {
                    @Override public void run() {
                        loadNativeAd();
                    }
                }, delayMillis);
            }
        });
    }

    private void showNativeAd(@NonNull BeesNativeAd beesNativeAd) {
        if (mNativeAdLoader != null && mNativeAdLoader.isReady()) {
            mNativeAdLoader.setAdListener(this);
            mNativeAdLoader.show(findViewById(R.id.ad_container), new BeesNativeViewBinder(R.layout.layout_debugger_native) {

                @Override public void renderAdView(@NonNull ViewGroup adLayout) {

                    // icon
                    NativeAdImage iconNativeImage = beesNativeAd.getIconImage();
                    if (iconNativeImage != null) {
                        ImageView iconView = adLayout.findViewById(R.id.native_id_icon);
                        if (iconNativeImage.getDrawable() != null) {
                            iconView.setImageDrawable(iconNativeImage.getDrawable());
                            iconView.setVisibility(View.VISIBLE);
                            // set icon view
                            setIconView(iconView);
                        } else {
                            iconView.setVisibility(View.GONE);
                        }
                    }

                    // title
                    TextView titleView = adLayout.findViewById(R.id.native_id_title);
                    if (TextUtils.isEmpty(beesNativeAd.getTitle())) {
                        titleView.setVisibility(View.GONE);
                    } else {
                        titleView.setText(beesNativeAd.getTitle());
                        titleView.setVisibility(View.VISIBLE);
                        // set title view
                        setTitleView(titleView);
                    }

                    // advertiser
                    TextView advertiserView = adLayout.findViewById(R.id.native_id_advertiser);
                    if (TextUtils.isEmpty(beesNativeAd.getAdvertiser())) {
                        advertiserView.setVisibility(View.GONE);
                    } else {
                        advertiserView.setText(beesNativeAd.getAdvertiser());
                        advertiserView.setVisibility(View.VISIBLE);
                        // set advertiser view
                        setAdvertiserView(advertiserView);
                    }

                    // body
                    TextView bodyView = adLayout.findViewById(R.id.native_id_body);
                    if (TextUtils.isEmpty(beesNativeAd.getBody())) {
                        bodyView.setVisibility(View.GONE);
                    } else {
                        bodyView.setText(beesNativeAd.getBody());
                        bodyView.setVisibility(View.VISIBLE);
                        // set body view
                        setBodyView(bodyView);
                    }

                    // starRating
                    RatingBar ratingBar = adLayout.findViewById(R.id.native_id_star);
                    if (beesNativeAd.getStarRating() == null) {
                        ratingBar.setVisibility(View.GONE);
                    } else {
                        ratingBar.setRating(beesNativeAd.getStarRating().floatValue());
                        ratingBar.setVisibility(View.VISIBLE);
                        // set star rating view
                        setStarRatingView(ratingBar);
                    }

                    // callToAction
                    TextView callToActionView = adLayout.findViewById(R.id.native_id_cta);
                    if (TextUtils.isEmpty(beesNativeAd.getCallToAction())) {
                        callToActionView.setVisibility(View.GONE);
                    } else {
                        callToActionView.setText(beesNativeAd.getCallToAction());
                        callToActionView.setVisibility(View.VISIBLE);
                        // set call to action view
                        setCallToActionView(callToActionView);
                    }

                    // media view
                    FrameLayout mediaLayout = adLayout.findViewById(R.id.native_layout_media);
                    View mediaView = beesNativeAd.getMediaView();
                    if (mediaView != null) {
                        mediaLayout.removeAllViews();
                        if (mediaView.getParent() != null) {
                            ((ViewGroup) mediaView.getParent()).removeView(mediaView);
                        }
                        FrameLayout.LayoutParams mainImageParam = new FrameLayout.LayoutParams(MATCH_PARENT, WRAP_CONTENT);
                        mainImageParam.gravity = Gravity.CENTER;
                        mediaView.setLayoutParams(mainImageParam);
                        mediaLayout.addView(mediaView, mainImageParam);
                        mediaLayout.setVisibility(View.VISIBLE);
                        // set media view
                        setMediaLayoutView(mediaLayout);
                    } else {
                        mediaLayout.setVisibility(View.GONE);
                    }
                }
            });
        }
    }

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

    @Override public void onAdImpression() {

    }

    @Override public void onAdDisplayFailed(@NonNull AdsError adsError) {
        loadNativeAd();
    }

    @Override public void onAdClicked() {

    }
}

开屏广告

  1. 加载

BeesAppOpenAd.load(this, "«ad-unit-id»", new AppOpenAdLoadCallback() {
    @Override 
    public void onAdLoaded(@NonNull BeesAppOpenAd appOpenAd) {
        // 广告加载成功
    }

    @Override 
    public void onAdLoadFailed(@NonNull AdsError error) {
       // 广告加载失败
    }
});
  1. 监听

appOpenAd.setAdListener(new BeesAdsListener() {
    @Override public void onAdDisplayed() {
        
    }

    @Override public void onAdDisplayFailed(@NonNull AdsError error) {

    }

    @Override public void onAdImpression() {

    }

    @Override public void onAdClicked() {

    }

    @Override public void onAdHidden() {

    }
});

回调说明:

方法名称

方法说明

onAdDisplayed()

广告展示成功

onAdDisplayFailed(@NonNull AdsError adsError)

广告展示失败

onAdImpression()

广告曝光回调

onAdClicked()

广告点击回调

onAdHidden()

广告隐藏回调

  1. 展示

if (appOpenAd != null) {
    appOpenAd.show(activity);
}
  1. 示例

public class AppOpenExampleActivity extends Activity implements BeesAdsListener {

    @Nullable
    private BeesAppOpenAd mAppOpenAd;

    private int mRetryAttemptCount;

    private void loadAppOpenAd() {
        BeesAppOpenAd.load(this, "«ad-unit-id»", new AppOpenAdLoadCallback() {
            @Override public void onAdLoaded(@NonNull BeesAppOpenAd appOpenAd) {
                mRetryAttemptCount = 0;
                mAppOpenAd = appOpenAd;
                showAppOpenAd();
            }

            @Override public void onAdLoadFailed(@NonNull AdsError error) {
                mAppOpenAd = null;
                mRetryAttemptCount++;

                long delayMillis = TimeUnit.SECONDS.toMillis((long) Math.pow(2, Math.min(6, mRetryAttemptCount)));

                new Handler().postDelayed(new Runnable() {
                    @Override public void run() {
                        loadAppOpenAd();
                    }
                }, delayMillis);
            }
        });
    }

    private void showAppOpenAd() {
        if (mAppOpenAd != null) {
            mAppOpenAd.setAdListener(this);
            mAppOpenAd.show(this);
        }
    }

    @Override public void onAdDisplayed() {

    }

    @Override public void onAdDisplayFailed(@NonNull AdsError adsError) {
        mAppOpenAd = null;
        loadAppOpenAd();
    }

    @Override public void onAdImpression() {

    }

    @Override public void onAdClicked() {

    }

    @Override public void onAdHidden() {
        mAppOpenAd = null;
        loadAppOpenAd();
    }
}

插屏广告

  1. 加载

BeesInterstitialAd.load(this, "«ad-unit-id»", new InterstitialAdLoadCallback() {
    @Override 
    public void onAdLoaded(@NonNull BeesInterstitialAd interstitialAd) {
        // 广告加载成功
    }

    @Override 
    public void onAdLoadFailed(@NonNull AdsError error) {
       // 广告加载失败
    }
});
  1. 监听

interstitialAd.setAdListener(new BeesAdsListener() {
    @Override public void onAdDisplayed() {
        // 广告展示成功
    }

    @Override public void onAdDisplayFailed(@NonNull AdsError error) {
        // 广告展示失败
    }

    @Override public void onAdImpression() {
        // 广告曝光回调
    }

    @Override public void onAdClicked() {
        // 广告点击回调
    }

    @Override public void onAdHidden() {
        // 广告隐藏回调
    }
});

回调说明:

方法名称

方法说明

onAdDisplayed()

广告展示成功

onAdDisplayFailed(@NonNull AdsError adsError)

广告展示失败

onAdImpression()

广告曝光回调

onAdClicked()

广告点击回调

onAdHidden()

广告隐藏回调

  1. 展示

if (interstitialAd != null) {
    interstitialAd.show(activity);
}
  1. 示例

public class ExampleActivity extends Activity implements BeesAdsListener {

    @Nullable
    private BeesInterstitialAd mInterstitialAd;

    private int mRetryAttemptCount;

    private void loadInterstitialAd() {
        BeesInterstitialAd.load(this, "«ad-unit-id»", new InterstitialAdLoadCallback() {
            @Override public void onAdLoaded(@NonNull BeesInterstitialAd beesInterstitialAd) {
                mRetryAttemptCount = 0;
                mInterstitialAd = beesInterstitialAd;
                showInterstitialAd();
            }

            @Override public void onAdLoadFailed(@NonNull AdsError error) {
                mInterstitialAd = null;
                mRetryAttemptCount++;

                long delayMillis = TimeUnit.SECONDS.toMillis((long) Math.pow(2, Math.min(6, mRetryAttemptCount)));

                new Handler().postDelayed(new Runnable() {
                    @Override public void run() {
                        loadInterstitialAd();
                    }
                }, delayMillis);
            }
        });
    }

    private void showInterstitialAd() {
        if (mInterstitialAd != null) {
            mInterstitialAd.setAdListener(this);
            mInterstitialAd.show(this);
        }
    }

    @Override public void onAdDisplayed() {

    }

    @Override public void onAdDisplayFailed(@NonNull AdsError adsError) {
        mInterstitialAd = null;
        loadInterstitialAd();
    }

    @Override public void onAdImpression() {

    }

    @Override public void onAdClicked() {

    }

    @Override public void onAdHidden() {
        mInterstitialAd = null;
        loadInterstitialAd();
    }
}

激励广告

  1. 加载

BeesRewardedAd.load(this, "«ad-unit-id»", new RewardedAdLoadCallback() {
    @Override 
    public void onAdLoaded(@NonNull BeesRewardedAd rewardedAd) {
        // 广告加载成功
    }

    @Override 
    public void onAdLoadFailed(@NonNull AdsError error) {
       // 广告加载失败
    }
});
  1. 监听

rewardedAd.setAdListener(new BeesRewardedListener() {

    @Override public void onAdDisplayed() {

    }

    @Override public void onAdDisplayFailed(@NonNull AdsError error) {

    }

    @Override public void onAdImpression() {

    }

    @Override public void onAdUserRewarded() {

    }

    @Override public void onAdClicked() {

    }

    @Override public void onAdHidden() {

    }
});

回调说明:

方法名称

方法说明

onAdDisplayed()

广告展示成功

onAdDisplayFailed(@NonNull AdsError adsError)

广告展示失败

onAdImpression()

广告曝光回调

onAdUserRewarded()

广告奖励回调

onAdClicked()

广告点击回调

onAdHidden()

广告隐藏回调

  1. 展示

if (rewardedAd != null) {
    rewardedAd.show(activity);
}
  1. 示例

public class ExampleActivity extends Activity implements BeesRewardedListener {

    @Nullable
    private BeesRewardedAd mRewardedAd;

    private int mRetryAttemptCount;

    private void loadRewardedAd() {
        BeesRewardedAd.load(this, "«ad-unit-id»", new RewardedAdLoadCallback() {
            @Override public void onAdLoaded(@NonNull BeesRewardedAd rewardedAd) {
                mRetryAttemptCount = 0;
                mRewardedAd = rewardedAd;
                showRewardedAd();
            }

            @Override public void onAdLoadFailed(@NonNull AdsError error) {
                mRewardedAd = null;
                mRetryAttemptCount++;

                long delayMillis = TimeUnit.SECONDS.toMillis((long) Math.pow(2, Math.min(6, mRetryAttemptCount)));

                new Handler().postDelayed(new Runnable() {
                    @Override public void run() {
                        showRewardedAd();
                    }
                }, delayMillis);
            }
        });
    }

    private void showRewardedAd() {
        if (mRewardedAd != null) {
            mRewardedAd.setAdListener(this);
            mRewardedAd.show(this);
        }
    }

    @Override public void onAdDisplayed() {

    }

    @Override public void onAdDisplayFailed(@NonNull AdsError adsError) {
        mRewardedAd = null;
        loadRewardedAd();
    }

    @Override public void onAdImpression() {

    }

    @Override public void onAdClicked() {

    }

    @Override public void onAdHidden() {
        mRewardedAd = null;
        loadRewardedAd();
    }

    @Override public void onAdUserRewarded() {

    }
}

插页式激励广告

  1. 加载

BeesRewardedInterstitialAd.load(this, "«ad-unit-id»", new RewardedInterstitialAdLoadCallback() {
    @Override 
    public void onAdLoaded(@NonNull BeesRewardedInterstitialAd rewardedInterstitialAd) {
        // 广告加载成功
    }

    @Override 
    public void onAdLoadFailed(@NonNull AdsError error) {
       // 广告加载失败
    }
});
  1. 监听

rewardedInterstitialAd.setAdListener(new BeesRewardedListener() {

    @Override public void onAdDisplayed() {

    }

    @Override public void onAdDisplayFailed(@NonNull AdsError error) {

    }

    @Override public void onAdImpression() {

    }

    @Override public void onAdUserRewarded() {

    }

    @Override public void onAdClicked() {

    }

    @Override public void onAdHidden() {

    }
});

回调说明:

方法名称

方法说明

onAdDisplayed()

广告展示成功

onAdDisplayFailed(@NonNull AdsError adsError)

广告展示失败

onAdImpression()

广告曝光回调

onAdUserRewarded()

广告奖励回调

onAdClicked()

广告点击回调

onAdHidden()

广告隐藏回调

  1. 展示

if (rewardedInterstitialAd != null) {
    rewardedInterstitialAd.show(activity);
}
  1. 示例

public class ExampleActivity extends Activity implements BeesRewardedListener {

    @Nullable
    private BeesRewardedInterstitialAd mRewardedInterstitialAd;

    private int mRetryAttemptCount;

    private void loadRewardedInterstitialAd() {
        BeesRewardedInterstitialAd.load(this, "«ad-unit-id»", new RewardedInterstitialAdLoadCallback() {
            @Override public void onAdLoaded(@NonNull BeesRewardedInterstitialAd rewardedInterstitialAd) {
                mRetryAttemptCount = 0;
                mRewardedInterstitialAd = rewardedInterstitialAd;
                showRewardedInterstitialAd();
            }

            @Override public void onAdLoadFailed(@NonNull AdsError error) {
                mRewardedInterstitialAd = null;
                mRetryAttemptCount++;

                long delayMillis = TimeUnit.SECONDS.toMillis((long) Math.pow(2, Math.min(6, mRetryAttemptCount)));

                new Handler().postDelayed(new Runnable() {
                    @Override public void run() {
                        loadRewardedInterstitialAd();
                    }
                }, delayMillis);
            }
        });
    }

    private void showRewardedInterstitialAd() {
        if (mRewardedInterstitialAd != null) {
            mRewardedInterstitialAd.setAdListener(this);
            mRewardedInterstitialAd.show(this);
        }
    }

    @Override public void onAdDisplayed() {

    }

    @Override public void onAdDisplayFailed(@NonNull AdsError adsError) {
        mRewardedInterstitialAd = null;
        loadRewardedInterstitialAd();
    }

    @Override public void onAdImpression() {

    }

    @Override public void onAdClicked() {

    }

    @Override public void onAdHidden() {
        mRewardedInterstitialAd = null;
        loadRewardedInterstitialAd();
    }

    @Override public void onAdUserRewarded() {

    }
}

插播广告

  1. 模块接入

在应用级 build.gradle 文件(通常是 app/build.gradle)中,完成插播模块接入

dependencies {
    // bees sdk
    implementation 'io.github.beesads:sdk:2.0.0'
    // bees video 
    implementation 'io.github.beesads:video:1.1.0'
    
    // google ads 
    implementation 'com.google.android.gms:play-services-ads:23.5.0'
    
    // google ima 
    implementation 'androidx.browser:browser:1.6.0'
    implementation 'androidx.media:media:1.6.0'
    implementation 'com.google.ads.interactivemedia.v3:interactivemedia:3.36.0'
}
  1. API 介绍

BeesMediaAdLoader.Builder

插播广告加载器构建类

方法名称

方法说明

Builder(Context context, String adTagUrl)

构造参数。adTagUrl:广告网址

setLanguage(String language)

自定义设置本地语言,参考语言区域代码默认语言:"en"

setLoadTimeout(int timeout)

自定义超时时间,单位:毫秒默认时间为 8*1000 毫秒。

setAdLabelUI(boolean showAdLabelUI)

显示 AD 标签默认隐藏

setCountdownUI(boolean showCountdownUI)

显示 UI 倒计时默认隐藏

setMuted(boolean mute)

是否请求静音广告默认静音

setPreload(boolean preload)

是否开启预加载默认开启

setContentProgressProvider(@NonNullMediaContentProgressProvider contentProgressProvider)

设置内容视频进度提供者(VAMP 广告时需要)

build()

创建插播广告对象

BeesMediaAdLoader

插播广告加载器

方法名称

方法说明

loadAd(ViewGroup container, MediaAdPlayer mediaAdPlayer)

加载广告container:展示广告所需要的容器,必传参数且不为 NULLmediaAdPlayer: 自定义播放器需实现的接口类

setAdListener(@Nullable BeesMediaAdListener listener)

设置广告监听器

setAdEventListener(@Nullable BeesMediaAdEventListener listener)

设置广告事件监听器

setAdOptionsCallback(@Nullable BeesMediaAdOptionsCallback callback)

设置广告配置回调。用于开发者在广告请求前中灵活配置各阶段设置参数。

isReady()

广告是否就绪

destroy()

广告销毁,释放资源。

BeesMediaAd

插播广告

方法名称

方法说明

String getAdTagUrl()

获取广告网址参数

MediaProgressUpdate getAdProgress()

设置广告监听器

registerFriendlyObstruction(@NonNull View view, @NonNull BeesMediaFriendlyType friendlyType, @Nullable String reason);

注册友好控件。view: 标记为友好阻碍的视图(UI 元素)friendlyType:

  1. VIDEO_CONTROLS: 视频控件,例如播放、暂停按钮等;

  2. CLOSE_AD: 关闭广告按钮;

  3. NOT_VISIBLE: 不可见的 UI 元素;

  4. OTHER: 其他类型的 UI 元素。

reason:提供详细的理由说明为什么该视图不会阻碍用户与广告互动

unregisterAllFriendlyObstructions()

移除友好控件注册

start()

广告播放

pause()

广告暂停

resume()

广告恢复

destroy()

广告销毁,释放资源。

BeesMediaAdEventListener

广告事件监听器

方法名称

方法说明

void onEvent(@NonNull Object event)

广告时间回调。event:参考 IMA 广告事件文档

BeesMediaAdOptionsCallback

广告设置回调

方法名称

方法说明

onAdsSetting(@NonNull Object configSetting)

用于开发者自定义 ImaSdkSettings设置

onAdsRequest(@NonNull Object requestSetting)

用于开发者自定义 AdsRequest 设置

onAdsRender(@NonNull Object renderSetting)

用于开发者自定义 AdsRenderingSettings 设置

BeesMediaAdListener

广告监听器

方法名称

方法说明

onAdLoadSuccess(@NonNull String adUrl)

广告加载成功回调,当加载 VMAP 广告时,会触发多次。

onAdLoadFailed(@NonNull SdkError error)

广告加载失败回调

onAdStarted()

广告开始播放

onAdPaused()

广告播放后,暂停播放

onAdResumed()

广告暂停后,继续播放

onAdCompleted()

广告播放完成

onAdAllCompleted()

广告全部播放完成

onAdError(@NonNull AdsError error)

广告出现错误

onAdSkipped()

可跳过的广告,用户点击跳过

onAdTapped()

视频区域被点击

onAdClicked()

广告被点击

onAdProgress(long progress, long duration)

广告播放进度progress: 当前播放进度 duration:广告总时长单位:毫秒

onContentPause()

视频内容暂停,开发者需在此回调中完成视频内容暂停

onContentResume()

视频内容恢复,开发者需在此回调中完成视频内容恢复

代码示例:

// 构建视频内容进度提供者
MediaContentProgressProvider contentProgressProvider = new MediaContentProgressProvider() {
    @NonNull @Override public MediaProgressUpdate getContentProgress() {
        return new MediaProgressUpdate();
    }
};

// 设置广告视频请求参数
BeesMediaAdLoader mediaAdLoader = new BeesMediaAdLoader.Builder(context, adTagUrl)
    .setMuted(true)
    .setPreload(false)
    .setLanguage(Locale.CHINA.getLanguage())
    .setLoadTimeout(60000)
    .setCountdown(false)
    .setAdLabel(false)
    .setContentProgressProvider(contentProgressProvider)
    .build();
    
// 设置广告配置回调
mediaAdLoader.setAdOptionsCallback(new MobileMediaOptionsCallback() {
    @Override public void onAdsSetting(@NonNull Object configSetting) {
        if (configSetting instanceof ImaSdkSettings) {
            Log.d("Demo", "ImaSdkSetting: " + configSetting);
            ((ImaSdkSettings) configSetting).setLanguage(Locale.JAPAN.getLanguage());
        }
    }

    @Override public void onAdsRequest(@NonNull Object requestSetting) {
        if (requestSetting instanceof AdsRequest) {
            Log.d("Demo", "AdsRequest: " + requestSetting);
        }
    }

    @Override public void onAdsRender(@NonNull Object renderSetting) {
        if (renderSetting instanceof AdsRenderingSettings) {
            Log.d("Demo", "AdsRenderingSetting: " + renderSetting);
        }
    }
});

// 设置广告事件监听器
mediaAdLoader.setAdEventListener(event -> {
    if (event instanceof AdEvent) {
       
    }
});

// 监听广告回调
mediaAdLoader.setAdListener(new BeesMediaAdListener() {
    @Override public void onAdLoadSuccess(@NonNull BeesMediaAd mediaAd) {
        // 广告加载成功,开始播放
        if (mediaAdLoader != null && mediaAdLoader.isReady()) {
            mediaAd.registerFriendlyObstruction(playButton, BeesMediaFriendlyType.VIDEO_CONTROLS, "This is the video player play button")
            mediaAd.start();
        }
    }

    @Override public void onAdLoadFailed(@NonNull SdkError sdkError) {
        // 广告加载失败
    }

    @Override public void onAdClicked() {
        // 广告被点击
    }

    @Override public void onAdResumed() {
        // 广告暂停后,继续播放
    }

    @Override public void onAdPaused() {
        // 广告播放后,暂停播放
    }

    @Override public void onAdStarted() {
        // 广告开始播放
    }

    @Override public void onAdCompleted() {
        // 广告播放完成
    }

    @Override public void onAdAllCompleted() {
        // 广告全部播放完成
    }

    @Override public void onAdError(@NonNull AdsError error) {
        // 广告出现错误
    }

    @Override public void onAdSkipped() {
        // 可跳过的广告,用户点击跳过
    }

    @Override public void onAdTapped() {
        // 视频区域被点击
    }

    @Override public void onAdProgress(long progress, long duration) {
        // 广告播放进度
    }

    @Override public void onContentPause() {
        // 视频内容暂停
    }

    @Override public void onContentResume() {
        // 视频内容恢复
    }
});

// 加载广告
mediaAdLoader.loadAd(uiContainer, new MediaAdPlayer());

// 生命周期
@Override protected void onPause() {
    if (mediaAd != null) {
        mediaAd.pause();
    }
    super.onPause();
}

@Override protected void onResume() {
    super.onResume();
    if (mediaAd != null) {
        mediaAd.resume();
    }
}

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

隐私合规

GDPR

《通用数据保护条例》(General Data Protection Regulation,GDPR)是针对欧盟(EU)和欧洲经济区(EEA)所有公民的数据保护和隐私法的法规。

BeesPrivacySettings.setHasUserConsent(@NonNull Context context, boolean userConsent);

参数:

参数名称

参数含义

context

上下⽂

userConsent

true: 用户同意 false: 用户不同意

CCPA

加州消费者隐私法案 (CCPA) 是美国第一项全面隐私法。 它于 2018 年 6 月末签署成为法律,向加州消费者提供各种各样的隐私权利。 受到 CCPA 管制的企业将对这些消费者履行多项义务,包括信息披露、与欧盟一般数据保护条例 (GDPR) 类似的消费者权利、“选择退出”特定数据传输的权利,以及“选择加入”未成年人要求的权利。

BeesPrivacySettings.setDoNotSell(@NonNull Context context, boolean doNotSell);

参数:

参数名称

参数含义

context

上下⽂

doNotSell

true: 不上报数据 false: 上报数据

COPPA、GDPR Child

美国儿童在线隐私权保护法(Children’s Online Privacy Protection Act,)主要针对在线收集 13 岁以下儿童个人信息的行为。

BeesPrivacySettings.setIsAgeRestrictedUser(@NonNull Context context, boolean isAgeRestrictedUser);

参数:

参数名称

参数含义

context

上下⽂

isAgeRestrictedUser

true: 是年龄受限用户 false: 不是年龄受限用户

谷歌广告内容分级

BeesPrivacySettings.setMaxAdContentRating(@NonNull Context context, @Nullable String maxContentRating);

参数:

参数名称

参数含义

context

上下⽂

maxContentRating

所有受众: RequestConfiguration.MAX_AD_CONTENT_RATING_G青少年: RequestConfiguration.MAX_AD_CONTENT_RATING_T成人: RequestConfiguration.MAX_AD_CONTENT_RATING_MA需要由父母陪同观看: RequestConfiguration.MAX_AD_CONTENT_RATING_PG

调试模式

BeesSdk.getInstance(context).setDebuggerEnabled(enabled);

日志输出

BeesSdk.getInstance(context).setLoggingEnabled(enabled);

调试模式

BeesSdk.getInstance(context).setMuted(muted);

Last updated