Нативные объявления – это объекты объявлений, которые показываются пользователям с помощью компонентов интерфейса, встроенных в платформу. Они показываются в тех же типах представлений, которые вы уже используете для создания макетов, и могут быть отформатированы в соответствии с визуальным дизайном вашего приложения.
Когда нативное объявление загружается, ваше приложение получает объект объявления, содержащий его объекты, и именно приложение, а не GMA Next-Gen SDK, отвечает за их показ.
В общем случае для успешной реализации нативных объявлений необходимо выполнить два действия: загрузить объявление с помощью SDK и затем показать содержание объявления в приложении.
В этой статье рассказывается, как загружать нативные объявления с помощью SDK. Совет. Подробнее о нативных объявлениях можно узнать из нашего пособия по нативным объявлениям.
Примеры доступны для Java и Kotlin.Вы также можете ознакомиться с историями успеха клиентов: кейс 1, кейс 2.
Требования
- Настройте GMA Next-Gen SDK.
- GMA Next-Gen SDK версии
1.0.0или более поздней.
Всегда тестируйте с помощью тестовых объявлений
При создании и тестировании приложений используйте тестовые объявления, а не реальные. В противном случае ваш аккаунт может быть заблокирован.
Самый простой способ загрузить тестовые объявления – использовать специальный идентификатор тестового рекламного блока для нативных объявлений:
| Формат объявления | Пример идентификатора рекламного блока |
|---|---|
| Стандартное | ca-app-pub-3940256099942544/2247696110 |
| Нативная видеореклама | ca-app-pub-3940256099942544/1044960115 |
Как загрузить объявление
Чтобы загрузить нативное объявление, вызовите метод NativeAdLoader.load(), который принимает NativeAdRequest и NativeAdLoaderCallback.
import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAd
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAdLoader
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAdLoaderCallback
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAdRequest
class NativeFragment : Fragment() {
private var nativeAd: NativeAd? = null
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
loadAd()
}
private fun loadAd() {
// Build an ad request with native ad options to customize the ad.
val adRequest = NativeAdRequest
.Builder(AD_UNIT_ID, listOf(NativeAd.NativeAdType.NATIVE))
.build()
val adCallback =
object : NativeAdLoaderCallback {
override fun onNativeAdLoaded(nativeAd: NativeAd) {
// Called when a native ad has loaded.
}
override fun onAdFailedToLoad(adError: LoadAdError) {
// Called when a native ad has failed to load.
}
}
// Load the native ad with our request and callback.
NativeAdLoader.load(adRequest, adCallback)
}
companion object {
// Sample native ad unit ID.
const val AD_UNIT_ID = "ca-app-pub-3940256099942544/2247696110"
}
}
Как настроить обратный вызов события нативного объявления
При обработке onNativeAdLoaded задайте полученный NativeAd с помощью
NativeAdEventCallback
для определения функций получения событий жизненного цикла нативных объявлений:
nativeAd.adEventCallback =
object : NativeAdEventCallback {
override fun onAdShowedFullScreenContent() {
// Native ad showed full screen content.
}
override fun onAdDismissedFullScreenContent() {
// Native ad dismissed full screen content.
}
override fun onAdFailedToShowFullScreenContent {
// Native ad failed to show full screen content.
}
override fun onAdImpression() {
// Native ad recorded an impression.
}
override fun onAdClicked() {
// Native ad recorded a click.
}
}
Как загрузить несколько объявлений (необязательно)
Чтобы загрузить несколько объявлений, вызовите метод load() с необязательным параметром numberOfAds.
Максимальное значение, которое можно задать, – 5, что соответствует количеству объявлений.
GMA Next-Gen SDK может вернуть не точное количество объявлений, которое вы запросили.
private fun loadAd() {
// Build an ad request with native ad options to customize the ad.
val adRequest = NativeAdRequest
.Builder(AD_UNIT_ID, listOf(NativeAd.NativeAdType.NATIVE))
.build()
val adCallback =
object : NativeAdLoaderCallback {
override fun onNativeAdLoaded(nativeAd: NativeAd) {
// Called when a native ad has loaded.
}
override fun onAdFailedToLoad(adError: LoadAdError) {
// Called when a native ad has failed to load.
}
override fun onAdLoadingCompleted() {
// Called when all native ads have loaded.
}
}
// Load the native ad with our request and callback.
NativeAdLoader.load(adRequest, 3, adCallback)
}
Объявления, которые GMA Next-Gen SDK возвращает, уникальны, но объявления из зарезервированного инвентаря или от сторонних покупателей могут быть неуникальными.
Если вы используете медиацию, не вызывайте метод load(). Запросы нескольких нативных объявлений не работают с идентификаторами рекламных блоков, настроенными для медиации.
Рекомендации
При загрузке объявлений соблюдайте следующие правила:
Приложения, в которых нативные объявления показываются в списках, должны предварительно кешировать эти списки.
При предварительном кешировании объявлений очищайте кеш и перезагружайте страницу каждый час.
Ограничьте кеширование нативных объявлений только необходимыми данными. Например, при предварительном кешировании кешируйте только те объявления, которые сразу видны на экране. Нативные объявления занимают много памяти, и их кеширование без удаления приводит к чрезмерному использованию памяти.
Удаляйте нативные объявления, когда они больше не используются.
Аппаратное ускорение для видеообъявлений
Чтобы видеообъявления корректно показывались в нативных представлениях объявлений, необходимо включить аппаратное ускорение.
Аппаратное ускорение включено по умолчанию, но некоторые приложения могут отключать его. Если это относится к вашему приложению, рекомендуем включить аппаратное ускорение для классов Activity, в которых используются объявления.
Как включить аппаратное ускорение
Если приложение работает неправильно при включенном глобальном аппаратном ускорении, вы можете управлять им для отдельных действий. Чтобы включить или отключить аппаратное ускорение, используйте атрибут android:hardwareAccelerated для элементов <application> и <activity> в теге AndroidManifest.xml. В следующем примере показано, как включить аппаратное ускорение для всего приложения, но отключить его для одного объекта activity:
<application android:hardwareAccelerated="true">
<!-- For activities that use ads, hardwareAcceleration should be true. -->
<activity android:hardwareAccelerated="true" />
<!-- For activities that don't use ads, hardwareAcceleration can be false. -->
<activity android:hardwareAccelerated="false" />
</application>
Подробнее о том, как управлять аппаратным ускорением, рассказывается в руководстве по аппаратному ускорению. Обратите внимание, что отдельные просмотры объявлений нельзя включить для аппаратного ускорения, если отключена функция "Действия". Поэтому для нее должно быть включено аппаратное ускорение.
Показ объявления
После загрузки объявления его нужно показать пользователям. Подробнее о том, как это сделать, рассказывается в руководстве по расширенным функциям нативных объявлений.
Пример
Скачайте и запустите пример приложения, в котором показано, как использовать GMA Next-Gen SDK.