Google и Yandex реклама в android

0
(0)

Реклама добавляется достаточно просто и практически одинаково как в случае с google, так и с yandex. Но есть небольшие нюансы.

Yandex реклама

Добавляем зависимость в build.gradle.kts

Groovy
implementation("com.yandex.android:mobileads:7.0.1")

Создаем отдельную Composable функцию.

Kotlin
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.viewinterop.AndroidView
import com.yandex.mobile.ads.banner.BannerAdSize
import com.yandex.mobile.ads.banner.BannerAdView
import com.yandex.mobile.ads.common.AdRequest
import com.yandex.mobile.ads.common.AdSize

@Composable
fun YandexBanner(
    bannerId: Int,
    modifier: Modifier = Modifier
) {
    AndroidView(
        modifier = modifier,
        factory = {context ->
        BannerAdView(context).apply {
            setAdUnitId(context.getString(bannerId))
            setAdSize(BannerAdSize.stickySize(context, 300))
            val adRequest = AdRequest.Builder().build()
            loadAd(adRequest)
        }
    })

}

Здесь я передаю ID баннера, который будет прописан в strings.xml и modifier для того, чтобы управлять расположением рекламы. В моем случае это будет нижняя часть экрана.

Далее вызываю данную Composable функцию внутри контейнера Box в нужном мне экране.

Kotlin
YandexBanner(bannerId = R.string.yandex_banner_1, modifier = Modifier.align(Alignment.BottomCenter))

Также нужно создать отдельный класс и унаследоваться от класса Application. Обычно этот класс всегда у меня есть, так как я использую Dagger в качестве DI (dependency injection).

Kotlin
import android.app.Application
import com.yandex.mobile.ads.common.MobileAds
import dagger.hilt.android.HiltAndroidApp

@HiltAndroidApp
class MainApplication: Application() {
    override fun onCreate() {
        super.onCreate()
        MobileAds.initialize(this) {}
    }
}

Здесь вызывает override метода onCreate и инициализацию рекламы.

В качестве идентификатора можно использовать тестовый идентификатор из документации яндекса.

Google реклама.

Здесь практически тоже самое, только нужно добавить разрешение в androidManifest и там же указать идентификатор приложения в AdMob, идентификатор самого баннера будет другой.

Разрешение в AndroidManifest

XML
<uses-permission android:name="com.google.android.gms.permission.AD_ID"></uses-permission>

Также в блок application добавляем следующее

XML
<meta-data
  android:name="com.google.android.gms.ads.APPLICATION_ID"
  android:value="ca-app-pub-ХХХ"/>

Зависимости в build.gradle.kts

Groovy
implementation("com.google.android.gms:play-services-ads:23.0.0")

Создаем Composable функцию

Kotlin
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.viewinterop.AndroidView
import com.google.android.gms.ads.AdRequest
import com.google.android.gms.ads.AdSize
import com.google.android.gms.ads.AdView

@Composable
fun GoogleAdBanner(
    bannerId: Int,
    modifier: Modifier = Modifier
) {
    AndroidView(
        modifier = modifier,
        factory = { context ->
        AdView(context).apply {
            setAdSize(AdSize.BANNER)
            adUnitId = context.getString(bannerId)
            val adRequest = AdRequest.Builder().build()
            loadAd(adRequest)
        }
    })
}

Тут все в целом почти также, как и у яндекс.

Вызываем внутри контейнера Box

Kotlin
GoogleAdBanner(bannerId = R.string.ads_banner_1, modifier = Modifier.align(Alignment.BottomCenter))

Класс MainApplication (название может быть любым)

Kotlin
import android.app.Application
import com.google.android.gms.ads.MobileAds
import dagger.hilt.android.HiltAndroidApp

@HiltAndroidApp
class MainApplication: Application() {
    override fun onCreate() {
        super.onCreate()
        MobileAds.initialize(this) { }
    }
}

Также важно добавить в AndroidManifest указание использования нового класса

XML
android:name=".MainApplication"

Теперь мы можем в разных экранах вызывать данные Composable функции для показа рекламы.

Насколько статья полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Оставить комментарий