Предварительные требования
Всегда проводите тестирование с помощью тестовых объявлений.
При разработке и тестировании приложений обязательно используйте тестовые объявления, а не реальные, рабочие объявления. Несоблюдение этого правила может привести к блокировке вашего аккаунта.
Самый простой способ загрузить тестовые объявления — использовать наш специальный идентификатор тестового рекламного блока для рекламы с вознаграждением в Android:
/21775744923/example/rewarded
Он специально настроен на возврат тестовых объявлений для каждого запроса, и вы можете свободно использовать его в своих приложениях во время кодирования, тестирования и отладки. Просто убедитесь, что вы заменили его на свой собственный идентификатор рекламного блока перед публикацией приложения.
Подробную информацию о тестовой рекламе в GMA Next-Gen SDK см. в разделе «Включить тестовую рекламу» .
Загрузить рекламу
Для загрузки рекламы GMA Next-Gen SDK предлагает следующее:
Загрузка осуществляется с использованием API для загрузки отдельных объявлений .
Загрузка осуществляется с помощью API предварительной загрузки рекламы , что исключает необходимость ручной загрузки и кэширования рекламы.
Загрузка с использованием API для загрузки отдельных объявлений.
В следующем примере показано, как загрузить отдельное объявление:
Котлин
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 = "/21775744923/example/rewarded"
}
}
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 = "/21775744923/example/rewarded";
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;
}
}
);
}
}
Загрузка с использованием API предварительной загрузки рекламы.
Для начала предварительной загрузки выполните следующие действия:
Инициализируйте конфигурацию предварительной загрузки с помощью запроса на показ рекламы.
Запустите предварительную загрузку для рекламы с вознаграждением, используя идентификатор вашего рекламного блока и конфигурацию предварительной загрузки:
Котлин
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);
}
Когда будете готовы показать рекламу, запросите её отображение в загрузочном окне:
Котлин
// 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 . Перед показом рекламы с вознаграждением обязательно установите этот коллбэк:
Котлин
// 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 .
Котлин
// 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.