Điều kiện tiên quyết
Luôn thử nghiệm bằng quảng cáo thử nghiệm
Khi bạn tạo và thử nghiệm ứng dụng, hãy nhớ sử dụng quảng cáo thử nghiệm thay vì quảng cáo đang chạy trong thực tế. Chúng tôi có thể tạm ngưng tài khoản của bạn nếu bạn không làm như vậy.
Cách dễ nhất để tải quảng cáo thử nghiệm là sử dụng mã đơn vị quảng cáo thử nghiệm dành riêng cho quảng cáo có tặng thưởng trên Android:
ca-app-pub-3940256099942544/5224354917
Mã này được định cấu hình đặc biệt để trả về quảng cáo thử nghiệm cho mọi yêu cầu, và bạn có thể sử dụng mã này trong ứng dụng của mình khi lập trình, chạy thử nghiệm và gỡ lỗi. Bạn chỉ cần nhớ thay thế mã này bằng mã đơn vị quảng cáo của mình trước khi xuất bản ứng dụng.
Để biết thêm thông tin về cách hoạt động của quảng cáo thử nghiệm của GMA Next Gen SDK, hãy xem bài viết Quảng cáo thử nghiệm.
Tải một quảng cáo
Để tải quảng cáo, GMA Next Gen SDK cung cấp những thông tin sau:
Tải bằng API tải một quảng cáo.
Tải bằng API tải trước quảng cáo, giúp bạn không cần tải và lưu vào bộ nhớ đệm quảng cáo theo cách thủ công.
Tải bằng API tải một quảng cáo
Ví dụ sau đây cho biết cách tải một quảng cáo:
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;
}
}
);
}
}
Tải bằng API tải trước quảng cáo
Để bắt đầu tải trước, hãy làm như sau:
Khởi chạy cấu hình tải trước bằng một yêu cầu quảng cáo.
Khởi động trình tải trước cho quảng cáo có tặng thưởng bằng mã đơn vị quảng cáo và cấu hình tải trước:
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);
}
Khi bạn đã sẵn sàng hiển thị quảng cáo, hãy thăm dò quảng cáo từ trình tải trước:
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);
Đặt RewardedAdEventCallback
RewardedAdEventCallback xử lý các sự kiện liên quan đến việc hiển thị RewardedAd của bạn. Trước khi hiển thị quảng cáo có tặng thưởng, hãy nhớ đặt lệnh gọi lại:
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();
}
}
);
Hiển thị quảng cáo
Để hiển thị quảng cáo có tặng thưởng, hãy sử dụng phương thức show(). Sử dụng đối tượng OnUserEarnedRewardListener để xử lý các sự kiện tặng thưởng.
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();
}
});
Câu hỏi thường gặp
- Lệnh gọi khởi động có thời gian chờ không?
- Sau 10 giây, GMA Next Gen SDK sẽ gọi
OnInitializationCompleteListenerngay cả khi mạng dàn xếp vẫn chưa hoàn tất quy trình khởi chạy. - Điều gì xảy ra nếu một số mạng dàn xếp chưa sẵn sàng hoạt động khi tôi nhận được lệnh gọi lại dùng để khởi động?
Bạn nên tải quảng cáo bên trong lệnh gọi lại của
OnInitializationCompleteListener. Ngay cả khi mạng dàn xếp chưa sẵn sàng hoạt động, GMA Next Gen SDK vẫn yêu cầu mạng đó cung cấp một quảng cáo. Vì vậy, nếu quá trình khởi chạy kết thúc sau khi hết thời gian chờ, thì mạng dàn xếp vẫn có thể thực hiện các yêu cầu quảng cáo tiếp theo trong phiên đó.Bạn có thể tiếp tục kiểm tra trạng thái khởi động của tất cả các bộ chuyển đổi trong toàn bộ phiên ứng dụng bằng cách gọi
MobileAds.getInitializationStatus().- Làm cách nào để biết lý do khiến một mạng dàn xếp cụ thể chưa sẵn sàng hoạt động?
AdapterStatus.getDescription()cho biết lý do khiến một bộ chuyển đổi chưa sẵn sàng thực hiện các yêu cầu quảng cáo.- Lệnh gọi lại
onUserEarnedReward()có luôn được gọi trước lệnh gọi lạionAdDismissedFullScreenContent()không? Đối với quảng cáo của Google, tất cả lệnh gọi
onUserEarnedReward()đều xảy ra trướconAdDismissedFullScreenContent(). Đối với những quảng cáo được phân phát thông qua tính năng dàn xếp, hoạt động triển khai SDK của mạng quảng cáo bên thứ ba sẽ xác định thứ tự lệnh gọi lại. Đối với các SDK của mạng quảng cáo cung cấp một lệnh gọi lại đóng có thông tin về phần thưởng, bộ chuyển đổi dàn xếp sẽ gọionUserEarnedReward()trướconAdDismissedFullScreenContent().
Ví dụ:
Tải xuống và chạy ứng dụng mẫu minh hoạ cách sử dụng GMA Next Gen SDK.