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 heightadView.screenActive = trueadView.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 не запрашивают новую рекламу. Ошибки сети не повторяют выдачу автоматически.