文档

LevelPlay SDK - Android

迁移到 Android 的奖励广告单元 API

通过初始化 SDK、创建具有广告单元 ID 的奖励广告对象以及实现广告事件的监听器,迁移到 LevelPlay 奖励广告单元 API。
阅读时间8 分钟最后更新于 1 个月前

本指南介绍如何从 SDK 9.0.0 版本开始集成 LevelPlay API,使用广告单元 ID 作为瀑布流标识符来加载和显示奖励广告服务。
重要
使用本文中介绍的 API,而不是当前使用的集成方法(IronSource init、IronSource 加载奖励、奖励监听器)。您可以在 API 比较 部分中找到 API 替换。
高级设置和法规设置没有更改,在初始化 LevelPlay SDK 之前或之后支持这些设置和设置。

在 LevelPlay 平台中找到广告单元 ID

要加载和显示奖励广告服务,需要使用 LevelPlay 聚合平台中的广告单元 ID:
  1. 在 LevelPlay 帐户中,导航到 Setup > Ad Units。
  2. 复制奖励的广告单元 ID 并将其集成到代码中。

初始化 LevelPlay SDK

要初始化 LevelPlay SDK,请执行以下步骤:
  1. 实现初始化成功和失败的回调。
  2. 使用 appKey 和用户 ID(如果相关)调用 LevelPlay init API。
LevelPlayInitRequest initRequest = new LevelPlayInitRequest.Builder(appKey) .withUserId("UserID") .build();LevelPlayInitListener initListener = new LevelPlayInitListener() { } @Override public void onInitFailed(@NonNull LevelPlayInitError 报错) { @Override public void onInitSuccess(LevelPlayConfiguration configuration) {};LevelPlay.init(context, initRequest, initListener);

LevelPlay 初始化监听器

onInitSuccess:初始化成功完成时触发。收到此指示后,您可以创建和加载广告。
onInitFailed:未成功检索配置,无法加载广告服务。建议稍后尝试并初始化 LevelPlay SDK(当互联网连接可用或故障原因得到解决时)。

初始化

旧版

广告单元(新)

APIIronSource.initLevelPlay.init
回调onInitializationCompleteonInitSuccess
–onInitFailed

创建奖励广告对象

必须在收到 onInitSuccess 回调后执行奖励广告对象的创建。
该对象是可重用的实例,可以处理多个加载并在整个会话中显示。创建后,应使用 来加载和展示同一广告单元的广告服务。
对于更高级的实现,如有必要,您可以创建多个奖励广告对象。
// 创建奖励广告mRewardedAd = new LevelPlayRewardedAd("adUnitId");

注册到奖励事件

为创建的奖励广告单元设置奖励监听器,以便了解广告投放情况。
  • 建议在加载奖励广告之前设置监听器。
  • 每个奖励广告都应有自己的监听器实现。
  • 回调在主线程上运行。
// 创建奖励广告mRewardedAd = new LevelPlayRewardedAd("adUnitId");// 设置监听器mRewardedAd.setListener(this);// LevelPlayRewardedAdListener methods@Overridepublic void onAdLoaded(@NonNull LevelPlayAdInfo adInfo) {}@Overridepublic void onAdLoadFailed(@NonNull LevelPlayAdError error) {}@Overridepublic void onAdDisplayed(@NonNull LevelPlayAdInfo adInfo) {}@Overridepublic void onAdDisplayFailed(@NonNull LevelPlayAdError error, @NonNull LevelPlayAdInfo adInfo) {}@Overridepublic void onAdClosed(@NonNull LevelPlayAdInfo adInfo) {}@Overridepublic void onAdClicked(@NonNull LevelPlayAdInfo adInfo) {}@Overridepublic void onAdInfoChanged(@NonNull LevelPlayAdInfo adInfo) {}@Overridepublic void onAdRewarded(@NonNull LevelPlayReward reward, @NonNull LevelPlayAdInfo adInfo) {}

LevelPlay 奖励广告回调

onAdLoaded:成功加载广告时提供。
onAdLoadFailed:在广告加载失败时提供。包含广告单元信息。
onAdDisplayed:在显示广告时提供。这相当于展示。
onAdDisplayFailed:广告无法显示时提供。
onAdRewarded:在广告获得奖励时提供。其中包含广告单元信息和奖励信息。
onAdClicked(可选):在用户点击广告时提供。
onAdClosed:在广告关闭时提供。
onAdInfoChanged(可选):在更新广告信息时提供。加载另一个广告后可用,并且包含更高的 CPM/速率。

组件

旧版

广告单元(新)

监听器IronSourceRewardedVideoEventsLevelPlayRewardedAd
回调onAdReadyonAdLoaded
onAdLoadFailedonAdLoadFailed
onAdOpenedonAdDisplayed
onAdClosedonAdClosed
onAdShowFailedonAdDisplayFailed
onAdRewardedonAdRewarded
onAdClickedonAdClicked
onAdShowSucceededn/a(已弃用)
n/aonAdInfoChanged

加载奖励广告

收到 onInitSuccess 回调后,即可加载奖励广告。应使用 方法执行此操作:
// 加载或重新加载广告mRewardedAd.loadAd();

显示奖励广告

您可以在收到 onAdLoaded 回调后使用 showAd API 展示奖励广告。 如果使用广告位,请将广告位名称作为 API 的一部分共享,如下所示。
// 显示广告而不放置/位置 mRewardedAd.showAd(this);// 显示带有放置/位置的广告 mRewardedAd.showAd(this, placementName);

检查 Ad is Ready

为了避免展示失败,并确保广告可以正确展示,建议在调用 showAd API 之前使用以下 API。
isAdReady – 如果广告已成功加载且广告单元未设置上限,则返回 true,否则返回 false。
isPlacementCapped – 有效放置/位置被限制时返回 true。如果放置/位置无效或未设置上限,此 API 将返回 false。
// 检查广告是否已准备就绪并且放置/位置未设置上限 if(mRewardedAd.isAdReady() && !LevelPlayRewardedAd.isPlacementCapped(placementName)) { mRewardedAd.showAd(this, placementName);}
当广告成功展示给玩家时,您可以加载另一个广告,重复加载奖励广告步骤。一时间加载单个广告时,无需创建新的广告实体。

奖励用户

LevelPlay SDK 将在用户每次成功完成视频时触发 onAdRewarded。
onAdRewarded 和 onAdClosed 是异步的。确保设置监听器以提供奖励,即使 onAdRewarded 在 onAdClosed 之后被触发也是如此。
@Overridepublic void onAdRewarded(@NonNull LevelPlayReward reward, @NonNull LevelPlayAdInfo adInfo) { } // 实现向用户授予奖励的逻辑 字符串 name = reward.getName(); int amount = reward.getAmount();}

多个广告单元奖励 API

组件

旧版

广告单元(新)

类IronSourceLevelPlayRewardedAd
APIloadRewardedVideoloadAd
showRewardedVideoshowAd
isRewardedVideoPlacementCappedisPlacementCapped
isRewardedVideoAvailableisAdReady
placement.getRewardNamereward.name
placement.getRewardAmountreward.amount

奖励广告的完整实现示例

public 类 RewardedAdActivity extends 活动实现 LevelPlayRewardedAdListener { 私有变量 LevelPlayRewardedAd mRewardedAd; void createRewardedAd() { mRewardedAd = new LevelPlayRewardedAd("adUnitId"); mRewardedAd.setListener(this); } void loadRewardedAd() { // 加载或重新加载广告 mRewardedAd.loadAd(); } void showRewardedAd() { if (mRewardedAd.isAdReady()) { mRewardedAd.showAd(this); } } void showRewardedAd(@NonNull 字符串 placementName) { // 检查广告是否已准备就绪并且放置/位置未设置上限 if (mRewardedAd.isAdReady() && !LevelPlayRewardedAd.isPlacementCapped(placementName)) { mRewardedAd.showAd(this, placementName); } } // LevelPlayRewardedAdListener 方法 @Override public void onAdLoaded(@NonNull LevelPlayAdInfo adInfo) {} @Override public void onAdLoadFailed(@NonNull LevelPlayAdError 报错) { @Override public void onAdDisplayed(@NonNull LevelPlayAdInfo adInfo) {} @Override public void onAdClosed(@NonNull LevelPlayAdInfo adInfo) { @Override public void onAdClicked(@NonNull LevelPlayAdInfo adInfo) { @Override public void onAdDisplayFailed(@NonNull LevelPlayAdError 报错, @NonNull LevelPlayAdInfo adInfo) { @Override public void onAdInfoChanged(@NonNull LevelPlayAdInfo adInfo) { @Override public void onAdRewarded(@NonNull LevelPlayReward reward, @NonNull LevelPlayAdInfo adInfo) {}