插页式广告属于全屏广告,会覆盖宿主应用的整个界面,通常展示在应用流程的自然过渡点上,例如,活动之间的切换处或游戏关卡之间的暂停时段中。当应用展示插页式广告时,用户可以选择点按广告,访问其目标网址,也可以将其关闭,返回应用。
本指南介绍如何将插页式广告集成到 Android 应用中。
前提条件
- Google 移动广告 SDK 19.7.0 或更高版本。
- 完成入门指南。
始终使用测试广告进行测试
在构建和测试应用时,请确保使用的是测试广告,而不是实际投放的广告。否则,可能会导致您的帐号被暂停。
对于 Android 插页式广告,加载测试广告最简便的方法就是使用下面的测试专用广告单元 ID:
/6499/example/interstitial
该测试广告单元 ID 已经过专门配置,可为每个请求返回测试广告,您可以在自己应用的编码、测试和调试过程中随意使用该测试广告单元 ID。只需确保您会在发布应用前用自己的广告单元 ID 替换该测试广告单元 ID 即可。
如需详细了解移动广告 SDK 的测试广告如何运作,请参阅测试广告。
加载广告
要加载插页式广告,请调用 AdManagerInterstitialAd
静态 load()
方法并传入 AdManagerInterstitialAdLoadCallback
以接收加载的广告或任何可能的错误。请注意,与其他广告格式加载回调一样,AdManagerInterstitialAdLoadCallback
会利用 LoadAdError
提供较高保真度的错误详情。
Java
import com.google.android.gms.ads.admanager.AdManagerInterstitialAd; import com.google.android.gms.ads.admanager.AdManagerInterstitialAdLoadCallback; public class MainActivity extends Activity { private AdManagerInterstitialAd mAdManagerInterstitialAd; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build() AdManagerInterstitialAd.load(this,"/6499/example/interstitial", adRequest, new AdManagerInterstitialAdLoadCallback() { @Override public void onAdLoaded(@NonNull AdManagerInterstitialAd interstitialAd) { // The mAdManagerInterstitialAd reference will be null until // an ad is loaded. mAdManagerInterstitialAd = interstitialAd; Log.i(TAG, "onAdLoaded"); } @Override public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) { // Handle the error Log.d(TAG, loadAdError.toString()); mAdManagerInterstitialAd = null; } }); } }
Kotlin
import com.google.android.gms.ads.admanager.AdManagerInterstitialAd; import com.google.android.gms.ads.admanager.AdManagerInterstitialAdLoadCallback; class MainActivity : AppCompatActivity() { private var mAdManagerInterstitialAd: AdManagerInterstitialAd? = null private final var TAG = "MainActivity" override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) var adRequest = AdManagerAdRequest.Builder().build() AdManagerInterstitialAd.load(this,"/6499/example/interstitial", adRequest, object : AdManagerInterstitialAdLoadCallback() { override fun onAdFailedToLoad(adError: LoadAdError) { Log.d(TAG, adError?.toString()) mAdManagerInterstitialAd = null } override fun onAdLoaded(interstitialAd: AdManagerInterstitialAd) { Log.d(TAG, 'Ad was loaded.') mAdManagerInterstitialAd = interstitialAd } }) } }
设置 FullScreenContentCallback
FullScreenContentCallback
会处理与显示 InterstitialAd
相关的事件。在显示 InterstitialAd
之前,请务必设置回调:
Java
mAdManagerInterstitialAd.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."); mAdManagerInterstitialAd = null; } @Override public void onAdFailedToShowFullScreenContent(AdError adError) { // Called when ad fails to show. Log.e(TAG, "Ad failed to show fullscreen content."); mAdManagerInterstitialAd = 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."); } });
Kotlin
mAdManagerInterstitialAd?.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. Log.d(TAG, "Ad dismissed fullscreen content.") mAdManagerInterstitialAd = null } override fun onAdFailedToShowFullScreenContent(adError: AdError?) { // Called when ad fails to show. Log.e(TAG, "Ad failed to show fullscreen content.") mAdManagerInterstitialAd = 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.") } }
展示广告
插页式广告应在应用流程的自然停顿期间展示,例如游戏的不同关卡之间或用户完成一项任务之后。要展示插页式广告,请使用 show()
方法。
Java
if (mAdManagerInterstitialAd != null) { mAdManagerInterstitialAd.show(MyActivity.this); } else { Log.d("TAG", "The interstitial ad wasn't ready yet."); }
Kotlin
if (mAdManagerInterstitialAd != null) { mAdManagerInterstitialAd?.show(this) } else { Log.d("TAG", "The interstitial ad wasn't ready yet.") }
一些最佳做法
- 考虑插页式广告是否为适合您应用的广告类型。
- 插页式广告在具有自然过渡点的应用中效果最佳。 此类过渡点通常存在于应用内的任务结束时,例如分享完图片或完成一个游戏关卡时。因为用户希望可以在操作过程中休息一下,因此,展示插页式广告不会影响用户体验。请务必考虑在应用流程的哪些时间点展示插页式广告,以及用户可能会以什么方式响应。
- 切记在展示插页式广告时暂停操作。
- 插页式广告类型多样,包括文字广告、图片广告和视频广告等。确保应用在展示插页式广告时,也会暂停使用某些资源,以便供广告使用,这一点十分重要。例如,当您发出展示插页式广告的调用后,请务必暂停应用产生的所有音频输出。
- 留出充足的加载时间。
- 确保在恰当的时间展示插页式广告十分重要,同样,确保用户无需等待广告加载也十分重要。在您打算调用
show()
前,请调用load()
提前加载广告,这可确保应用在广告展示时间到来前完全加载插页式广告。 - 不要向用户展示太多广告。
- 虽然提高插页式广告在应用中的展示频次似乎是增收的好方法,但也可能会降低用户体验并降低点击率。应确保用户不会频繁受到广告打扰,使他们可以充分享受到使用应用的乐趣。
GitHub 上的示例
后续步骤
- 了解广告定位。