Нативные объявления – это объекты объявлений, которые показываются пользователям с помощью компонентов интерфейса, встроенных в платформу. Они показываются в тех же типах представлений, которые вы уже используете для создания макетов, и могут быть отформатированы в соответствии с визуальным оформлением вашего приложения.
При загрузке нативного объявления приложение получает объект объявления, содержащий его объекты, и за их показ отвечает приложение, а не 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. В следующем примере аппаратное ускорение включено для всего приложения, но отключено для одного действия:
<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.