插页式激励广告是一种激励用户的广告格式,采用这种格式时,您可以通过在应用中的自然过渡点自动展示的广告向用户提供奖励。与激励广告不同,用户无需自行选择即可观看插页式激励广告。
前提条件
- Google 移动广告 SDK 19.2.0 或更高版本。
- 按照入门指南导入 Google 移动广告 SDK 并更新您的
AndroidManifest.xml
。 - 要使用插页式激励广告,请与您的客户经理联系。
实现
植入插页式激励广告的主要步骤如下所示:
- 加载广告。
- 注册全屏事件回调。
- 处理奖励回调。
- 展示广告。
加载广告
广告的加载是通过针对 RewardedInterstitialAd
类使用静态 load()
方法完成的。load 方法需要使用情境、您的广告单元 ID、an AdRequest
对象和 RewardedInterstitialAdLoadCallback
(以在广告加载成功或失败时收到通知)。已加载的 RewardedInterstitialAd
对象以 onRewardedInterstitialAdLoaded()
回调中的参数的形式提供。以下示例展示了如何在 MainActivity
中加载 RewardedInterstitialAd
。
Java
public class MainActivity extends AppCompatActivity { private RewardedInterstitialAd rewardedInterstitialAd; private String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MobileAds.initialize(this, new OnInitializationCompleteListener() { @Override public void onInitializationComplete(InitializationStatus initializationStatus) { loadAd(); } }); } public void loadAd() { // Use the test ad unit ID to load an ad. RewardedInterstitialAd.load(MainActivity.this, "ca-app-pub-3940256099942544/5354046379", new AdRequest.Builder().build(), new RewardedInterstitialAdLoadCallback() { @Override public void onAdLoaded(RewardedInterstitialAd ad) { Log.d(TAG, "Ad was loaded."); rewardedInterstitialAd = ad; } @Override public void onAdFailedToLoad(LoadAdError loadAdError) { Log.d(TAG, loadAdError.toString()); rewardedInterstitialAd = null; } }); } }
Kotlin
import com.google.android.gms.ads.rewardedinterstitial.RewardedInterstitialAd import com.google.android.gms.ads.rewardedinterstitial.RewardedInterstitialAdLoadCallback class MainActivity : AppCompactActivity() { private var rewardedInterstitialAd? = null private final var TAG = "MainActivity" override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) MobileAds.initialize(this) { initializationStatus -> loadAd() } } private fun loadAd() { RewardedInterstitialAd.load(this, "ca-app-pub-3940256099942544/5354046379", AdRequest.Builder().build(), object : RewardedInterstitialAdLoadCallback() { override fun onAdLoaded(ad: RewardedInterstitialAd) { Log.d(TAG, "Ad was loaded.") rewardedInterstitialAd = ad } override fun onAdFailedToLoad(adError: LoadAdError) { Log.d(TAG, adError?.toString()) rewardedInterstitialAd = null } }) } }
注册回调
要接收有关展示事件的通知,您必须向广告的 setter 方法传递 FullScreenContentCallback
对象。FullScreenContentCallback
对象会在广告成功展示或展示失败,以及用户关闭广告时处理回调。以下代码展示了如何在 RewardedInterstitialAdLoadCallback
中设置匿名 FullScreenContentCallback
对象:
Java
public void loadAd(){ RewardedInterstitialAd.load(MainActivity.this, "ca-app-pub-3940256099942544/5354046379", new AdRequest.Builder().build(), new RewardedInterstitialAdLoadCallback() { @Override public void onAdLoaded(RewardedInterstitialAd ad) { rewardedInterstitialAd = ad; rewardedInterstitialAd.setFullScreenContentCallback(new FullScreenContentCallback() { @Override public void onAdClicked() { // Called when a click is recorded for an ad. Log.d(TAG, "Ad was clicked."); } @Override public void onAdDismissedFullScreenContent() { // Called when ad is dismissed. // Set the ad reference to null so you don't show the ad a second time. Log.d(TAG, "Ad dismissed fullscreen content."); rewardedInterstitialAd = null; } @Override public void onAdFailedToShowFullScreenContent(AdError adError) { // Called when ad fails to show. Log.e(TAG, "Ad failed to show fullscreen content."); rewardedInterstitialAd = null; } @Override public void onAdImpression() { // Called when an impression is recorded for an ad. Log.d(TAG, "Ad recorded an impression."); } @Override public void onAdShowedFullScreenContent() { // Called when ad is shown. Log.d(TAG, "Ad showed fullscreen content."); } }); } @Override public void onAdFailedToLoad(LoadAdError loadAdError) { Log.d(TAG, loadAdError.toString()); rewardedInterstitialAd = null; } }); }
Kotlin
private fun loadAd() { RewardedInterstitialAd.load(this, "ca-app-pub-3940256099942544/5354046379", AdRequest.Builder().build(), object : RewardedInterstitialAdLoadCallback() { override fun onAdLoaded(ad: RewardedInterstitialAd) { rewardedInterstitialAd = ad rewardedInterstitialAd?.fullScreenContentCallback = object: FullScreenContentCallback() { override fun onAdClicked() { // Called when a click is recorded for an ad. Log.d(TAG, "Ad was clicked.") } override fun onAdDismissedFullScreenContent() { // Called when ad is dismissed. // Set the ad reference to null so you don't show the ad a second time. Log.d(TAG, "Ad dismissed fullscreen content.") rewardedInterstitialAd = null } override fun onAdFailedToShowFullScreenContent(adError: AdError) { // Called when ad fails to show. Log.e(TAG, "Ad failed to show fullscreen content.") rewardedInterstitialAd = null } override fun onAdImpression() { // Called when an impression is recorded for an ad. Log.d(TAG, "Ad recorded an impression.") } override fun onAdShowedFullScreenContent() { // Called when ad is shown. Log.d(TAG, "Ad showed fullscreen content.") } } } override fun onAdFailedToLoad(adError: LoadAdError) { Log.d(TAG, adError?.toString()) rewardedInterstitialAd = null } }) }
处理奖励
要展示您的插页式激励广告,请在 MainActivity
中实现 OnUserEarnedRewardListener
接口,以便在用户获得奖励时收到通知。
Java
public class MainActivity extends AppCompatActivity implements OnUserEarnedRewardListener { ... @Override public void onUserEarnedReward(@NonNull RewardItem rewardItem) { Log.i(TAG, "User earned reward."); // TODO: Reward the user! } }
Kotlin
class MainActivity : AppCompatActivity(), OnUserEarnedRewardListener { ... override fun onUserEarnedReward(rewardItem: RewardItem) { Log.d(TAG, "User earned reward.") // TODO: Reward the user! } }
展示广告
实现 OnUserEarnedRewardListener
接口后,您可以使用广告的 show()
方法展示广告,如下所示:
Java
rewardedInterstitialAd.show(/* Activity */ MainActivity.this,/* OnUserEarnedRewardListener */ MainActivity.this);
Kotlin
rewardedInterstitialAd?.show(/* Activity */ this, /* OnUserEarnedRewardListener */ this)