SDK 初始化
初始化接⼝调⽤⽅式有如下两种,初始化可以使用 快速初始化
动态初始化
其中的一种进行接入
快速初始化
在 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>
BeesSdk.getInstance(context).initialize(new OnSdkInitializationListener());
参数说明如下:
代码示例:
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)
参数说明如下:
代码示例:
BeesSdk.getInstance(this, "Your App Id").initialize(new OnSdkInitializationListener() {
@Override public void onInitializeSuccess() {
// 初始化成功
}
@Override public void onInitializeFailed(@NonNull AdsError sdkError) {
// 初始化失败
}
});
OnSdkInitializationListener 说明:
初始化回调接口
onInitializeFailed(@NonNull AdsError adsError)
SDK 接口介绍
横幅广告
BeesBannerAd bannerAdView = new BeesBannerAd(context);
bannerAdView.setListener(new BeesBannerAdListener());
bannerAdView.setAdSize(BannerSize.BANNER);
bannerAdView.setAdUnitId("«ad-unit-id»");
bannerAdView.loadAd();
BannerSize.MEDIUM_RECTANGLE
ViewGroup rootView = findViewById(android.R.id.content)
rootView.addView(bannerAdView)
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() {
// 广告被隐藏
}
});
public class ExampleActivity extends Activity {
@Override protected void onDestroy() {
if (bannerAdView != null) {
bannerAdView.destroy();
bannerAdView = null;
}
super.onDestroy();
}
}
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() {
}
}
原生广告
BeesNativeAdLoader.load(this, "«ad-unit-id»", new NativeAdLoadCallback() {
@Override public void onAdLoaded(@NonNull BeesNativeAd beesNativeAd) {
// 广告加载成功
}
@Override
public void onAdLoadFailed(@NonNull AdsError error) {
// 广告加载失败
}
});
if (nativeAdLoader != null && nativeAdLoader.isReady()) {
nativeAdLoader.setAdListener(new BeesNativeAdListener());
}
BeesNativeAdListener 说明:
原生广告监听器
onAdDisplayFailed(@NonNull AdsError adsError)
展示
创建原生广告视图层级
<?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>
显示广告并绑定原生广告控件
if (nativeAdLoader != null && nativeAdLoader.isReady()) {
nativeAdLoader.showAd(adContainerViewGroup, new BeesNativeViewBinder(nativeAdView));
}
if (mNativeAdLoader != null) {
mNativeAdLoader.destroy();
mNativeAdLoader = null;
}
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() {
}
}
开屏广告
BeesAppOpenAd.load(this, "«ad-unit-id»", new AppOpenAdLoadCallback() {
@Override
public void onAdLoaded(@NonNull BeesAppOpenAd appOpenAd) {
// 广告加载成功
}
@Override
public void onAdLoadFailed(@NonNull AdsError error) {
// 广告加载失败
}
});
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() {
}
});
回调说明:
onAdDisplayFailed(@NonNull AdsError adsError)
if (appOpenAd != null) {
appOpenAd.show(activity);
}
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();
}
}
插屏广告
BeesInterstitialAd.load(this, "«ad-unit-id»", new InterstitialAdLoadCallback() {
@Override
public void onAdLoaded(@NonNull BeesInterstitialAd interstitialAd) {
// 广告加载成功
}
@Override
public void onAdLoadFailed(@NonNull AdsError error) {
// 广告加载失败
}
});
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() {
// 广告隐藏回调
}
});
回调说明:
onAdDisplayFailed(@NonNull AdsError adsError)
if (interstitialAd != null) {
interstitialAd.show(activity);
}
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();
}
}
激励广告
BeesRewardedAd.load(this, "«ad-unit-id»", new RewardedAdLoadCallback() {
@Override
public void onAdLoaded(@NonNull BeesRewardedAd rewardedAd) {
// 广告加载成功
}
@Override
public void onAdLoadFailed(@NonNull AdsError error) {
// 广告加载失败
}
});
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() {
}
});
回调说明:
onAdDisplayFailed(@NonNull AdsError adsError)
if (rewardedAd != null) {
rewardedAd.show(activity);
}
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() {
}
}
插页式激励广告
BeesRewardedInterstitialAd.load(this, "«ad-unit-id»", new RewardedInterstitialAdLoadCallback() {
@Override
public void onAdLoaded(@NonNull BeesRewardedInterstitialAd rewardedInterstitialAd) {
// 广告加载成功
}
@Override
public void onAdLoadFailed(@NonNull AdsError error) {
// 广告加载失败
}
});
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() {
}
});
回调说明:
onAdDisplayFailed(@NonNull AdsError adsError)
if (rewardedInterstitialAd != null) {
rewardedInterstitialAd.show(activity);
}
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() {
}
}
插播广告
在应用级 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'
}
BeesMediaAdLoader.Builder
插播广告加载器构建类
Builder(Context context, String adTagUrl)
setLanguage(String language)
setLoadTimeout(int timeout)
自定义超时时间,单位:毫秒默认时间为 8*1000 毫秒。
setAdLabelUI(boolean showAdLabelUI)
setCountdownUI(boolean showCountdownUI)
setPreload(boolean preload)
setContentProgressProvider(@NonNullMediaContentProgressProvider contentProgressProvider)
BeesMediaAdLoader
插播广告加载器
loadAd(ViewGroup container, MediaAdPlayer mediaAdPlayer)
加载广告container:展示广告所需要的容器,必传参数且不为 NULLmediaAdPlayer: 自定义播放器需实现的接口类
setAdListener(@Nullable BeesMediaAdListener listener)
setAdEventListener(@Nullable BeesMediaAdEventListener listener)
setAdOptionsCallback(@Nullable BeesMediaAdOptionsCallback callback)
设置广告配置回调。用于开发者在广告请求前中灵活配置各阶段设置参数。
BeesMediaAd
插播广告
MediaProgressUpdate getAdProgress()
registerFriendlyObstruction(@NonNull View view, @NonNull BeesMediaFriendlyType friendlyType, @Nullable String reason);
注册友好控件。view: 标记为友好阻碍的视图(UI 元素)friendlyType:
VIDEO_CONTROLS: 视频控件,例如播放、暂停按钮等;
reason:提供详细的理由说明为什么该视图不会阻碍用户与广告互动
unregisterAllFriendlyObstructions()
BeesMediaAdEventListener
广告事件监听器
void onEvent(@NonNull Object event)
BeesMediaAdOptionsCallback
广告设置回调
onAdsSetting(@NonNull Object configSetting)
用于开发者自定义 ImaSdkSettings
设置
onAdsRequest(@NonNull Object requestSetting)
onAdsRender(@NonNull Object renderSetting)
用于开发者自定义 AdsRenderingSettings
设置
BeesMediaAdListener
广告监听器
onAdLoadSuccess(@NonNull String adUrl)
广告加载成功回调,当加载 VMAP 广告时,会触发多次。
onAdLoadFailed(@NonNull SdkError error)
onAdError(@NonNull AdsError error)
onAdProgress(long progress, long duration)
广告播放进度progress: 当前播放进度 duration:广告总时长单位:毫秒
代码示例:
// 构建视频内容进度提供者
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);
参数:
CCPA
加州消费者隐私法案 (CCPA) 是美国第一项全面隐私法。 它于 2018 年 6 月末签署成为法律,向加州消费者提供各种各样的隐私权利。 受到 CCPA 管制的企业将对这些消费者履行多项义务,包括信息披露、与欧盟一般数据保护条例 (GDPR) 类似的消费者权利、“选择退出”特定数据传输的权利,以及“选择加入”未成年人要求的权利。
BeesPrivacySettings.setDoNotSell(@NonNull Context context, boolean doNotSell);
参数:
COPPA、GDPR Child
美国儿童在线隐私权保护法(Children’s Online Privacy Protection Act,)主要针对在线收集 13 岁以下儿童个人信息的行为。
BeesPrivacySettings.setIsAgeRestrictedUser(@NonNull Context context, boolean isAgeRestrictedUser);
参数:
true: 是年龄受限用户 false: 不是年龄受限用户
谷歌广告内容分级
BeesPrivacySettings.setMaxAdContentRating(@NonNull Context context, @Nullable String 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