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