Wymagania wstępne
- Pakiet SDK do reklam mobilnych Google w wersji 19.7.0 lub nowszej.
- Zapoznaj się z przewodnikiem dla początkujących.
Zawsze korzystaj z reklam testowych
Podczas tworzenia i testowania aplikacji używaj reklam testowych, a nie reklam, aktywne reklamy. Jeśli tego nie zrobisz, Twoje konto może zostać zawieszone.
Najłatwiejszym sposobem wczytania reklam testowych jest użycie specjalnego identyfikatora testowego Reklamy z nagrodą na Androidzie:
/21775744923/example/rewarded
Został on specjalnie skonfigurowany tak, aby wyświetlać reklamy testowe w odpowiedzi na każde żądanie. do wykorzystania we własnych aplikacjach przy kodowaniu, testowaniu i debugowaniu. Po prostu zrób zastąp go identyfikatorem jednostki reklamowej przed opublikowaniem aplikacji.
Więcej informacji o działaniu reklam testowych w pakiecie SDK do reklam mobilnych znajdziesz w artykule Testowanie Reklamy.
Wczytywanie obiektu reklamy z nagrodą
Reklamy z nagrodą są wczytywane przez wywołanie statycznej metody load()
w
RewardedAd
i zdanie RewardedAdLoadCallback
. Zwykle jest to
w metodzie onCreate()
Activity
.
Zwróć uwagę, że podobnie jak w przypadku innych formatów wywołań zwrotnych, RewardedAdLoadCallback
korzysta z platformy LoadAdError
, aby podawać bardziej szczegółowe informacje o błędach.
Java
import com.google.android.gms.ads.rewarded.RewardedAd;
public class MainActivity extends Activity {
private RewardedAd rewardedAd;
private final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
AdManagerAdRequest adRequest = new AdManagerAdRequest.Builder().build();
RewardedAd.load(this, "/21775744923/example/rewarded",
adRequest, new RewardedAdLoadCallback() {
@Override
public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
// Handle the error.
Log.d(TAG, loadAdError.toString());
rewardedAd = null;
}
@Override
public void onAdLoaded(@NonNull RewardedAd ad) {
rewardedAd = ad;
Log.d(TAG, "Ad was loaded.");
}
});
}
}
Kotlin
class MainActivity : AppCompatActivity() {
private var rewardedAd: RewardedAd? = null
private final var TAG = "MainActivity"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var adRequest = AdManagerAdRequest.Builder().build()
RewardedAd.load(this,"/21775744923/example/rewarded", adRequest, object : RewardedAdLoadCallback() {
override fun onAdFailedToLoad(adError: LoadAdError) {
Log.d(TAG, adError?.toString())
rewardedAd = null
}
override fun onAdLoaded(ad: RewardedAd) {
Log.d(TAG, "Ad was loaded.")
rewardedAd = ad
}
})
}
}
Ustawianie funkcji FullScreenContentCallback
FullScreenContentCallback
obsługuje zdarzenia związane z wyświetlaniem
RewardedAd
Zanim zaczniesz wyświetlać RewardedAd
, ustaw wywołanie zwrotne
np.:
Java
rewardedAd.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.");
rewardedAd = null;
}
@Override
public void onAdFailedToShowFullScreenContent(AdError adError) {
// Called when ad fails to show.
Log.e(TAG, "Ad failed to show fullscreen content.");
rewardedAd = 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
rewardedAd?.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.
// Set the ad reference to null so you don't show the ad a second time.
Log.d(TAG, "Ad dismissed fullscreen content.")
rewardedAd = null
}
override fun onAdFailedToShowFullScreenContent(adError: AdError?) {
// Called when ad fails to show.
Log.e(TAG, "Ad failed to show fullscreen content.")
rewardedAd = 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.")
}
}
Wyświetlanie reklamy
Podczas wyświetlania reklamy z nagrodą używasz obiektu OnUserEarnedRewardListener
do obsługi zdarzeń związanych z nagrodami.
Java
if (rewardedAd != null) {
Activity activityContext = MainActivity.this;
rewardedAd.show(activityContext, new OnUserEarnedRewardListener() {
@Override
public void onUserEarnedReward(@NonNull RewardItem rewardItem) {
// Handle the reward.
Log.d(TAG, "The user earned the reward.");
int rewardAmount = rewardItem.getAmount();
String rewardType = rewardItem.getType();
}
});
} else {
Log.d(TAG, "The rewarded ad wasn't ready yet.");
}
Kotlin
rewardedAd?.let { ad ->
ad.show(this, OnUserEarnedRewardListener { rewardItem ->
// Handle the reward.
val rewardAmount = rewardItem.amount
val rewardType = rewardItem.type
Log.d(TAG, "User earned the reward.")
})
} ?: run {
Log.d(TAG, "The rewarded ad wasn't ready yet.")
}
Najczęstsze pytania
- Czy wywołanie inicjalizujące ma limit czasu?
- Po 10 sekundach pakiet SDK do reklam mobilnych Google wywołuje komponent
OnInitializationCompleteListener
, nawet jeśli sieć zapośredniczenia nie od zakończenia inicjowania. - Co zrobić, jeśli niektóre sieci zapośredniczenia nie są gotowe, gdy otrzymam wywołanie zwrotne inicjujące?
Zalecamy wczytanie reklamy w wywołaniu zwrotnym funkcji
OnInitializationCompleteListener
Nawet jeśli sieć zapośredniczeń nie jest gotowa, pakiet SDK do reklam mobilnych Google nadal wysyła do tej sieci żądanie reklamy. Jeśli więc sieć zapośredniczenia zakończy inicjowanie po upływie limitu czasu, może nadal kolejnych żądań reklamy w tej sesji.Możesz nadal sprawdzać stan inicjalizacji wszystkich adapterów podczas sesji aplikacji, wywołując funkcję
MobileAds.getInitializationStatus()
.- Jak sprawdzić, dlaczego dana sieć zapośredniczenia nie jest gotowa?
Artykuł
AdapterStatus.getDescription()
wyjaśnia, dlaczego przejściówka nie jest gotowa do żądania reklamy usługi.- Czy wywołanie zwrotne
onUserEarnedReward()
jest zawsze wykonywane przed wywołaniemonAdDismissedFullScreenContent()
? W przypadku Google Ads wszystkie wywołania
onUserEarnedReward()
mają miejsce przedonAdDismissedFullScreenContent()
W przypadku reklam wyświetlanych przez zapośredniczenie, reklama firmy zewnętrznej, Kolejność wywołań zwrotnych zależy od implementacji pakietu SDK sieci. Do sieci reklamowej pakiety SDK, które zapewniają pojedyncze wywołanie zwrotne z informacjami o nagrodzie, adapter zapośredniczenia wywołuje funkcjęonUserEarnedReward()
przedonAdDismissedFullScreenContent()
Przykłady w GitHubie
Dalsze kroki
Zapoznaj się z tymi tematami: