Wymagania wstępne
Zawsze testuj za pomocą reklam testowych
Podczas tworzenia i testowania aplikacji używaj reklam testowych zamiast reklam aktywnych. Jeśli tego nie zrobisz, Twoje konto może zostać zawieszone.
Najłatwiejszym sposobem wczytywania reklam testowych jest użycie specjalnego identyfikatora jednostki reklamowej testowej w przypadku reklam z nagrodą na Androida:
ca-app-pub-3940256099942544/5224354917
Został on specjalnie skonfigurowany tak, aby zwracać reklamy testowe w przypadku każdego żądania. Możesz go używać w swoich aplikacjach podczas kodowania, testowania i debugowania. Pamiętaj tylko, aby przed opublikowaniem aplikacji zastąpić go identyfikatorem swojej jednostki reklamowej.
Szczegółowe informacje o GMA Next-Gen SDK reklamach testowych znajdziesz w artykule Włączanie reklam testowych.
Wczytywanie reklamy
Aby wczytać reklamę, GMA Next-Gen SDK oferuje te możliwości:
Wczytaj za pomocą interfejsu API do wczytywania pojedynczych reklam.
Wczytywanie za pomocą interfejsu API wstępnego wczytywania reklam, który eliminuje konieczność ręcznego wczytywania i buforowania reklam.
Wczytywanie za pomocą interfejsu API do wczytywania pojedynczych reklam
Poniższy przykład pokazuje, jak wczytać pojedynczą reklamę:
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;
}
}
);
}
}
Wczytywanie za pomocą interfejsu API wstępnego wczytywania reklam
Aby rozpocząć wstępne wczytywanie:
Zainicjuj konfigurację wstępnego wczytywania za pomocą prośby o reklamę.
Uruchom wstępne wczytywanie reklam z nagrodą za pomocą identyfikatora jednostki reklamowej i konfiguracji wstępnego wczytywania:
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);
}
Gdy reklama będzie gotowa do wyświetlenia, wyślij do wstępnego wczytywania żądanie reklamy:
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);
Ustawianie RewardedAdEventCallback
RewardedAdEventCallback obsługuje zdarzenia związane z wyświetlaniem RewardedAd. Zanim wyświetlisz reklamę z nagrodą, ustaw wywołanie zwrotne:
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();
}
}
);
Wyświetl reklamę
Aby wyświetlić reklamę z nagrodą, użyj metody show(). Użyj obiektu OnUserEarnedRewardListener do obsługi zdarzeń związanych z nagrodami.
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();
}
});
Najczęstsze pytania
- Czy połączenie inicjujące ma limit czasu?
- Po 10 sekundach GMA Next-Gen SDK wywołuje
OnInitializationCompleteListener, nawet jeśli sieć mediacyjna nie zakończyła jeszcze inicjowania. - Co się stanie, jeśli niektóre sieci mediacji nie będą gotowe, gdy otrzymam wywołanie zwrotne inicjowania?
Zalecamy wczytywanie reklamy w wywołaniu zwrotnym funkcji
OnInitializationCompleteListener. Nawet jeśli sieć zapośredniczenia nie jest gotowa,GMA Next-Gen SDK nadal wysyła do niej żądanie reklamy. Jeśli sieć zapośredniczenia zakończy inicjowanie po upływie limitu czasu, nadal może obsługiwać przyszłe żądania reklam w tej sesji.Podczas sesji w aplikacji możesz nadal sprawdzać stan inicjowania wszystkich adapterów, wywołując funkcję
MobileAds.getInitializationStatus().- Jak sprawdzić, dlaczego konkretna sieć zapośredniczenia nie jest gotowa?
AdapterStatus.getDescription()wyjaśnia, dlaczego adapter nie jest gotowy do obsługi żądań reklam.- Czy wywołanie zwrotne
onUserEarnedReward()jest zawsze wywoływane przed wywołaniem zwrotnymonAdDismissedFullScreenContent()? W przypadku reklam Google wszystkie
onUserEarnedReward()połączenia są nawiązywane przedonAdDismissedFullScreenContent(). W przypadku reklam wyświetlanych w ramach zapośredniczenia kolejność wywołań zwrotnych zależy od wdrożenia pakietu SDK sieci reklamowej firmy zewnętrznej. W przypadku pakietów SDK sieci reklamowych, które udostępniają pojedyncze wywołanie zwrotne zamykania z informacjami o nagrodzie, adapter mediacji wywołujeonUserEarnedReward()przedonAdDismissedFullScreenContent().
Przykład
Pobierz i uruchom przykładową aplikację, która pokazuje, jak używać GMA Next-Gen SDK.