Перейти к содержимому
Разделы документации
SDKМобильные приложенияKotlin · Android

Kotlin · Android

Kotlin SDK для Android View и Jetpack Compose. Android 6.0+ (API 23).

Площадка

Создать мобильную площадку

ПолеЗначение
platformIdПубличный ID. Один для Kotlin SDK и HTTP API этого приложения.
Production / TestЗадаётся при создании. Test всегда возвращает demo без списаний и событий учёта.
Частота и дневной лимитНастраиваются на странице площадки. Применяются к реальной рекламе.
Android packageНеобязательное ограничение. SDK передаёт packageName автоматически. Не подтверждает владение приложением.
placementПо умолчанию chat. Другие имена необходимо добавить в настройках.

Подключение

Модуль sdks/android из репозитория. Пакет не опубликован в Maven Central. JDK 17, compileSdk 35.

settings.gradle.kts
include(":sidekick-android")
project(":sidekick-android").projectDir = file("../sidekick/sdks/android")
app/build.gradle.kts
dependencies {
implementation(project(":sidekick-android"))
}
Android View
import com.sidekick.ads.*
val client = SidekickClient.create(applicationContext, "plt_example")
val adView = SidekickAdView(this)
container.addView(adView) // wrap_content height
adView.screenActive = true
adView.onError = { error -> /* Keep the original response. */ }
adView.load(client, AdRequest(
requestId = "chat-42-message-7",
placement = "chat",
languageCode = "ru",
context = AdContext(question = question, answer = answer),
test = true,
testFormat = AdFormat.CARD
))
// On permanent disposal:
adView.release()
client.close()

release() и close() вызываются при окончательном удалении, не сразу после load(). API-ключ в приложение не передаётся.

Jetpack Compose
val client = remember { SidekickClient.create(context, "plt_example") }
var ad by remember { mutableStateOf<MobileAd?>(null) }
LaunchedEffect(messageId) {
ad = try {
client.requestAd(AdRequest(requestId = messageId, test = true))
} catch (e: CancellationException) {
throw e
} catch (e: Exception) {
null
}
}
DisposableEffect(client) { onDispose { client.close() } }
ad?.let { SidekickAd(client, it, screenActive = screenActive) }

Просмотр и жизненный цикл

Просмотр: ≥50% карточки непрерывно 1 секунду, активные окно и экран, загруженные медиа. SidekickAdView отправляет /seen автоматически. При перекрытии карточки необходимо установить screenActive=false.

requestId постоянный для одного сообщения и placement. Изменение содержимого требует нового ID. Повтор из кэша и изменение appearance не запрашивают новую рекламу. Ошибки сети не повторяют выдачу автоматически.