必要條件
- Google Mobile Ads SDK 19.7.0 以上版本。
- 完成入門指南的步驟。
一律使用測試廣告進行測試
建構及測試應用程式時,請務必使用測試廣告,而非實際的正式廣告。否則帳戶可能會遭到停權。
如要載入測試廣告,最簡單的方法是使用 Android 獎勵廣告專用的測試廣告單元 ID:
/21775744923/example/rewarded
這類 ID 經特別設定,可針對每個請求傳回測試廣告。您可在編寫程式碼、測試及偵錯時,將其用於自己的應用程式。發布應用程式前,請務必將這類 ID 替換為自己的廣告單元 ID。
如要進一步瞭解 Google Mobile Ads SDK 測試廣告的運作方式,請參閱「測試廣告」。
載入獎勵廣告物件
如要載入獎勵廣告,請在 RewardedAd
類別中呼叫靜態 load()
方法,並傳入 RewardedAdLoadCallback
。這通常是在 Activity
的 onCreate()
方法中完成。請注意,與其他格式載入回呼相似,RewardedAdLoadCallback
會運用 LoadAdError
提供更高保真的錯誤詳情。
Java
Kotlin
將 AD_UNIT_ID 替換為廣告單元 ID。
設定 FullScreenContentCallback
FullScreenContentCallback
會處理與顯示 RewardedAd
相關的事件,顯示 RewardedAd
前,請務必設定回呼,如下所示:
Java
rewardedAd.setFullScreenContentCallback(
new FullScreenContentCallback() {
@Override
public void onAdDismissedFullScreenContent() {
// Called when fullscreen content is dismissed.
Log.d(TAG, "Ad was dismissed.");
// Don't forget to set the ad reference to null so you
// don't show the ad a second time.
rewardedAd = null;
}
@Override
public void onAdFailedToShowFullScreenContent(AdError adError) {
// Called when fullscreen content failed to show.
Log.d(TAG, "Ad failed to show.");
// Don't forget to set the ad reference to null so you
// don't show the ad a second time.
rewardedAd = null;
}
@Override
public void onAdShowedFullScreenContent() {
// Called when fullscreen content is shown.
Log.d(TAG, "Ad showed fullscreen content.");
}
@Override
public void onAdImpression() {
// Called when an impression is recorded for an ad.
Log.d(TAG, "Ad recorded an impression.");
}
@Override
public void onAdClicked() {
// Called when an ad is clicked.
Log.d(TAG, "Ad was clicked.");
}
});
Kotlin
rewardedAd?.fullScreenContentCallback =
object : FullScreenContentCallback() {
override fun onAdDismissedFullScreenContent() {
// Called when fullscreen content is dismissed.
Log.d(TAG, "Ad was dismissed.")
// Don't forget to set the ad reference to null so you
// don't show the ad a second time.
rewardedAd = null
}
override fun onAdFailedToShowFullScreenContent(adError: AdError) {
// Called when fullscreen content failed to show.
Log.d(TAG, "Ad failed to show.")
// Don't forget to set the ad reference to null so you
// don't show the ad a second time.
rewardedAd = null
}
override fun onAdShowedFullScreenContent() {
// Called when fullscreen content is shown.
Log.d(TAG, "Ad showed fullscreen content.")
}
override fun onAdImpression() {
// Called when an impression is recorded for an ad.
Log.d(TAG, "Ad recorded an impression.")
}
override fun onAdClicked() {
// Called when an ad is clicked.
Log.d(TAG, "Ad was clicked.")
}
}
顯示廣告
顯示獎勵廣告時,您可以使用 OnUserEarnedRewardListener
物件處理獎勵事件。
Java
rewardedAd.show(
MainActivity.this,
new OnUserEarnedRewardListener() {
@Override
public void onUserEarnedReward(@NonNull RewardItem rewardItem) {
Log.d(TAG, "User earned the reward.");
// Handle the reward.
}
});
Kotlin
rewardedAd?.show(
this,
OnUserEarnedRewardListener { rewardItem ->
Log.d(TAG, "User earned the reward.")
// Handle the reward.
val rewardAmount = rewardItem.amount
val rewardType = rewardItem.type
},
)
[選用] 驗證伺服器端驗證 (SSV) 回呼
如果應用程式需在伺服器端驗證回呼中加入額外資料,請使用獎勵廣告的自訂資料功能。在獎勵廣告物件上設定的任何字串值,都會傳遞至 SSV 回呼的 custom_data
查詢參數。如未設定任何自訂資料值,SSV 回呼就不會包含 custom_data
查詢參數值。
以下程式碼範例示範如何在請求廣告前,於獎勵廣告物件上設定自訂資料。
Java
Kotlin
將 SAMPLE_CUSTOM_DATA_STRING 替換為自訂資料。
如要設定自訂獎勵字串,請務必在廣告顯示前完成。
常見問題
- 初始化呼叫有逾時限制嗎?
- Google Mobile Ads SDK 初始化 10 秒後,即使有中介服務聯播網尚未完成初始化,SDK 仍會叫用
OnInitializationCompleteListener
。 - 收到初始化回呼時,如果部分中介服務聯播網尚未就緒,該怎麼辦?
建議在
OnInitializationCompleteListener
的回呼中載入廣告。即使中介服務聯播網尚未就緒,Google Mobile Ads SDK 仍會請求廣告。中介服務聯播網若在逾時後完成初始化,仍能於該工作階段處理後續的廣告請求。您可以在應用程式工作階段中呼叫
MobileAds.getInitializationStatus()
,持續輪詢所有轉接程式的初始化狀態。- 如何找出特定中介服務聯播網尚未就緒的原因?
AdapterStatus.getDescription()
會說明轉接程式無法處理廣告請求的原因。- 執行
onAdDismissedFullScreenContent()
回呼之前,是否一定會先呼叫onUserEarnedReward()
回呼? 如果是 Google 廣告,所有
onUserEarnedReward()
呼叫一定發生在onAdDismissedFullScreenContent()
之前。對於透過中介服務放送的廣告,回呼順序取決於第三方廣告聯播網 SDK 的導入方式。若廣告聯播網 SDK 僅提供一個包含獎勵資訊的關閉回呼,中介服務轉接程式會在onAdDismissedFullScreenContent()
之前叫用onUserEarnedReward()
。
GitHub 上的範例
後續步驟
請參閱下列主題: