ข้อกำหนดเบื้องต้น
ทดสอบด้วยโฆษณาทดสอบเสมอ
เมื่อสร้างและทดสอบแอป โปรดใช้โฆษณาทดสอบแทนโฆษณาจริง หากไม่ปฏิบัติตาม อาจทำให้บัญชีถูกระงับ
วิธีที่ง่ายที่สุดในการโหลดโฆษณาทดสอบคือการใช้รหัสหน่วยโฆษณาทดสอบเฉพาะสำหรับโฆษณาที่มีการให้รางวัลของ Android ดังนี้
ca-app-pub-3940256099942544/5224354917
ซึ่งได้รับการกำหนดค่าเป็นพิเศษให้แสดงโฆษณาทดสอบสำหรับทุกคำขอ และคุณสามารถใช้รหัสนี้ในแอปของคุณเองได้อย่างอิสระขณะเขียนโค้ด ทดสอบ และแก้ไขข้อบกพร่อง เพียงตรวจสอบว่าคุณได้แทนที่รหัสนี้ด้วยรหัสหน่วยโฆษณาของคุณเองก่อนเผยแพร่แอป
ดูรายละเอียดเกี่ยวกับโฆษณาทดสอบของ GMA Next-Gen SDK ได้ที่ หัวข้อเปิดใช้โฆษณาทดสอบ
โหลดโฆษณา
GMA Next-Gen SDK มีตัวเลือกต่อไปนี้สำหรับการโหลดโฆษณา
โหลดด้วย Single Ad Loading API
โหลดด้วย Ad Preloading API ซึ่งช่วยลด ความจำเป็นในการโหลดและแคชโฆษณาด้วยตนเอง
โหลดด้วย Single Ad Loading API
ตัวอย่างต่อไปนี้แสดงวิธีโหลดโฆษณาเดียว
Kotlin
import com.google.android.libraries.ads.mobile.sdk.common.AdLoadCallback
import com.google.android.libraries.ads.mobile.sdk.common.AdRequest
import com.google.android.libraries.ads.mobile.sdk.common.FullScreenContentError
import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError
import com.google.android.libraries.ads.mobile.sdk.rewarded.RewardedAd
import com.google.android.libraries.ads.mobile.sdk.rewarded.RewardedAdEventCallback
import com.google.android.libraries.ads.mobile.sdk.MobileAds
class RewardedActivity : Activity() {
private var rewardedAd: RewardedAd? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// Load ads after you inititalize GMA Next-Gen SDK.
RewardedAd.load(
AdRequest.Builder(AD_UNIT_ID).build(),
object : AdLoadCallback<RewardedAd> {
override fun onAdLoaded(ad: RewardedAd) {
// Rewarded ad loaded.
rewardedAd = ad
}
override fun onAdFailedToLoad(adError: LoadAdError) {
// Rewarded ad failed to load.
rewardedAd = null
}
},
)
}
companion object {
// Sample rewarded ad unit ID.
const val AD_UNIT_ID = "ca-app-pub-3940256099942544/5224354917"
}
}
Java
import com.google.android.libraries.ads.mobile.sdk.common.AdLoadCallback;
import com.google.android.libraries.ads.mobile.sdk.common.AdRequest;
import com.google.android.libraries.ads.mobile.sdk.common.FullScreenContentError;
import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError;
import com.google.android.libraries.ads.mobile.sdk.rewarded.RewardedAd;
import com.google.android.libraries.ads.mobile.sdk.rewarded.RewardedAdEventCallback;
import com.google.android.libraries.ads.mobile.sdk.MobileAds;
class RewardedActivity extends Activity {
// Sample rewarded ad unit ID.
private static final String AD_UNIT_ID = "ca-app-pub-3940256099942544/5224354917";
private RewardedAd rewardedAd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load ads after you initialize GMA Next-Gen SDK.
RewardedAd.load(
new AdRequest.Builder(AD_UNIT_ID).build(),
new AdLoadCallback<RewardedAd>() {
@Override
public void onAdLoaded(@NonNull RewardedAd rewardedAd) {
// Rewarded ad loaded.
AdLoadCallback.super.onAdLoaded(rewardedAd);
RewardedActivity.this.rewardedAd = rewardedAd;
}
@Override
public void onAdFailedToLoad(@NonNull LoadAdError adError) {
// Rewarded ad failed to load.
AdLoadCallback.super.onAdFailedToLoad(adError);
rewardedAd = null;
}
}
);
}
}
โหลดด้วย Ad Preloading API
หากต้องการเริ่มโหลดล่วงหน้า ให้ทำดังนี้
เริ่มต้นการกำหนดค่าการโหลดล่วงหน้าด้วยคำขอโฆษณา
เริ่มตัวโหลดล่วงหน้าสำหรับโฆษณาที่มีการให้รางวัลด้วยรหัสหน่วยโฆษณาและการกำหนดค่าการโหลดล่วงหน้า
Kotlin
private fun startPreloading(adUnitId: String) {
val adRequest = AdRequest.Builder(adUnitId).build()
val preloadConfig = PreloadConfiguration(adRequest)
RewardedAdPreloader.start(adUnitId, preloadConfig)
}
Java
private void startPreloading(String adUnitId) {
AdRequest adRequest = new AdRequest.Builder(adUnitId).build();
PreloadConfiguration preloadConfig = new PreloadConfiguration(adRequest);
RewardedAdPreloader.start(adUnitId, preloadConfig);
}
เมื่อพร้อมที่จะแสดงโฆษณาแล้ว ให้โพลโฆษณาจากตัวโหลดล่วงหน้า
Kotlin
// Polling returns the next available ad and loads another ad in the background.
val ad = RewardedAdPreloader.pollAd(adUnitId)
Java
// Polling returns the next available ad and loads another ad in the background.
final RewardedAd ad = RewardedAdPreloader.pollAd(adUnitId);
ตั้งค่า RewardedAdEventCallback
RewardedAdEventCallback จัดการเหตุการณ์ที่เกี่ยวข้องกับการแสดง
RewardedAd โปรดตั้งค่าการเรียกกลับก่อนแสดงโฆษณาที่มีการให้รางวัล
Kotlin
// Listen for ad events.
rewardedAd?.adEventCallback =
object : RewardedAdEventCallback {
override fun onAdShowedFullScreenContent() {
// Rewarded ad did show.
}
override fun onAdDismissedFullScreenContent() {
// Rewarded ad did dismiss.
rewardedAd = null
}
override fun onAdFailedToShowFullScreenContent(
fullScreenContentError: FullScreenContentError
) {
// Rewarded ad failed to show.
rewardedAd = null
}
override fun onAdImpression() {
// Rewarded ad did record an impression.
}
override fun onAdClicked() {
// Rewarded ad did record a click.
}
}
Java
// Listen for ad events.
rewardedAd.setAdEventCallback(
new RewardedAdEventCallback() {
@Override
public void onAdShowedFullScreenContent() {
// Rewarded ad did show.
RewardedAdEventCallback.super.onAdShowedFullScreenContent();
}
@Override
public void onAdDismissedFullScreenContent() {
// Rewarded ad did dismiss.
RewardedAdEventCallback.super.onAdDismissedFullScreenContent();
rewardedAd = null;
}
@Override
public void onAdFailedToShowFullScreenContent(
@NonNull FullScreenContentError fullScreenContentError) {
// Rewarded ad failed to show.
RewardedAdEventCallback.super.onAdFailedToShowFullScreenContent(
fullScreenContentError);
rewardedAd = null;
}
@Override
public void onAdImpression() {
// Rewarded ad did record an impression.
RewardedAdEventCallback.super.onAdImpression();
}
@Override
public void onAdClicked() {
// Rewarded ad did record a click.
RewardedAdEventCallback.super.onAdClicked();
}
}
);
แสดงโฆษณา
หากต้องการแสดงโฆษณาที่มีการให้รางวัล ให้ใช้เมธอด show() ใช้ออบเจ็กต์ OnUserEarnedRewardListener เพื่อจัดการเหตุการณ์รางวัล
Kotlin
// Show the ad.
rewardedAd?.show(
this@RewardedActivity,
object : OnUserEarnedRewardListener {
override fun onUserEarnedReward(rewardItem: RewardItem) {
// User earned the reward.
val rewardAmount = rewardItem.amount
val rewardType = rewardItem.type
}
},
)
Java
// Show the ad.
rewardedAd.show(
RewardedActivity.this,
new OnUserEarnedRewardListener() {
@Override
public void onUserEarnedReward(@NonNull RewardItem rewardItem) {
// User earned the reward.
int rewardAmount = rewardItem.getAmount();
String rewardType = rewardItem.getType();
}
});
คำถามที่พบบ่อย
- การเรียกใช้การเริ่มต้นมีระยะหมดเวลาไหม
- หลังจากผ่านไป 10 วินาที GMA Next-Gen SDK จะเรียกใช้
OnInitializationCompleteListenerแม้ว่าเครือข่ายสื่อกลางจะยัง เริ่มต้นไม่เสร็จสมบูรณ์ก็ตาม - จะเกิดอะไรขึ้นหากเครือข่ายสื่อกลางบางเครือข่ายยังไม่พร้อมเมื่อฉันได้รับการเรียกกลับการเริ่มต้น
เราขอแนะนำให้โหลดโฆษณาภายในฟังก์ชันเรียกกลับของ
OnInitializationCompleteListenerแม้ว่าเครือข่ายสื่อกลางจะยังไม่พร้อม GMA Next-Gen SDK จะยังคงขอโฆษณาจากเครือข่ายนั้น ดังนั้น หากเครือข่ายสื่อกลางเริ่มต้นเสร็จสมบูรณ์หลังจากหมดเวลา เครือข่ายนั้นจะยังคงให้บริการคำขอโฆษณาในอนาคตในเซสชันนั้นได้คุณสามารถโพลสถานะการเริ่มต้นของอะแดปเตอร์ทั้งหมดในเซสชันแอปได้โดยเรียกใช้
MobileAds.getInitializationStatus()- ฉันจะทราบได้อย่างไรว่าเหตุใดเครือข่ายสื่อกลางบางเครือข่ายจึงยังไม่พร้อม
AdapterStatus.getDescription()อธิบายเหตุผลที่อะแดปเตอร์ยังไม่พร้อมให้บริการคำขอโฆษณา- ฟังก์ชันเรียกกลับ
onUserEarnedReward()จะถูกเรียกใช้ก่อนฟังก์ชันเรียกกลับonAdDismissedFullScreenContent()เสมอใช่ไหม สำหรับโฆษณา Google การเรียกใช้
onUserEarnedReward()ทั้งหมดจะเกิดขึ้นก่อนonAdDismissedFullScreenContent()สำหรับโฆษณาที่แสดงผ่าน สื่อกลาง การติดตั้งใช้งาน SDK ของเครือข่ายโฆษณาบุคคลที่สามจะเป็นตัวกำหนดลำดับการเรียกกลับ สำหรับ SDK ของเครือข่ายโฆษณาที่ให้ฟังก์ชันเรียกกลับการปิดเพียงฟังก์ชันเดียวพร้อมข้อมูลรางวัล อะแดปเตอร์สื่อกลางจะเรียกใช้onUserEarnedReward()ก่อนonAdDismissedFullScreenContent()
ตัวอย่าง
ดาวน์โหลดและเรียกใช้แอปตัวอย่างที่แสดงการใช้ GMA Next-Gen SDK