Справочник Android SDK 1.0.4

Сигнатуры сверены с публичным исходным кодом. Примеры настройки — в Конфигурации, бизнес-сценарии — в Контексте и событиях.

Инициализация и настройки

fun initialize(
        context: Context,
        apiKey: String,
        section: String,
        gravityEventCallback: GravityEventCallback,
        productViewBuilder: ProductViewBuilder? = null,
        productFilter: ProductFilter? = null,
        uiSettings: UISettings? = null,
        logLevel: LogLevel = LogLevel.NONE,
    )

fun setOptions(
    options: Options?,
    contentSettings: ContentSettings?,
    proxyUrl: String?,
    )

fun setNotificationPermissionStatus(status: NotificationPermissionStatus)

Типы callback

typealias ProductFilter = (Slot) -> Boolean
typealias GravityEventCallback = (TrackingEvent) -> Unit

Доступ к экземпляру: GravitySDK.instance: GravitySDK. До initialize он выбрасывает исключение.

Идентификация

fun setUser(userId: String, sessionId: String)

setUser задаёт custom/ses для просмотров и событий. Его ограничение для /choose описано в Идентификации.

Просмотры и события

fun trackView(
    pageContext: PageContext,
    activityContext: Context,
    )

fun triggerEvent(
    events: List<TriggerEvent>,
    pageContext: PageContext,
    activityContext: Context,
    )

Загрузка контента

suspend fun getContentBySelector(
    selector: String,
    pageContext: PageContext,
    ): ContentResponse?

suspend fun getContentByGroupSelector(
    groupSelector: String,
    pageContext: PageContext,
    ): ContentResponse?

suspend fun getContentByCampaignId(
    campaignId: String,
    pageContext: PageContext,
    ): ContentResponse?

Ошибка возвращает null; успешный ответ может содержать пустой data. Значения selector/group/строкового ID кодируйте по правилу Android 1.0.4. Эти методы не показывают UI, но отправляют content load tracking.

Engagement

fun sendContentEngagement(engagement: ContentEngagement)

fun sendProductEngagement(engagement: ProductEngagement)

Presentation lock

fun lockPresentation()

fun unlockPresentation()

fun setPresentationLockListener(listener: ((Boolean) -> Unit)?)

Кэш и завершение работы

fun resetInlineViewCache(selector: String, pageContext: PageContext)

fun resetInlineListViewCache(groupSelector: String, pageContext: PageContext)

fun dispose()

Настройки запросов

data class Options(
    val isReturnCounter: Boolean = false,
    val isReturnUserInfo: Boolean = false,
    val isReturnAnalyticsMetadata: Boolean = false,
    val isImplicitPageview: Boolean = false,
    val isImplicitImpression: Boolean = true,
) {
    val isBuildEngagementUrl: Boolean = true
}

data class ContentSettings(
    val skusOnly: Boolean = false,
    val fields: List<String>? = null
)
Поле Options По умолчанию
isReturnCounter false
isReturnUserInfo false
isReturnAnalyticsMetadata false
isImplicitPageview false
isImplicitImpression true
isBuildEngagementUrl true, без публичного параметра для изменения

ContentSettings: skusOnly по умолчанию false, fields — null. Оба объекта заменяются целиком через setOptions.

PageContext

data class PageContext(
    val type: ContextType,
    val data: List<String>,
    val location: String,
    val lng: String? = null,
    val pageNumber: Int? = null,
    val referrer: String? = null,
    val utm: Map<String, String>? = null,
    val attributes: Map<String, String> = emptyMap(),
)

Ответ и модели

Тип/поле Содержание
ContentResponse Опциональный user и список data с кампаниями
Campaign.payload Список вариантов CampaignVariation
CampaignVariation Идентификаторы решения и список contents
CampaignContent contentId, deliveryMethod, step, variables, products, items, custom, events
content.variables Типизированные frameUI, elements и действия жизненного цикла; может отсутствовать
content.custom?.json Строка пользовательского JSON, разбирается приложением
Slot item, strId, опциональный slotId, fallback и tracking-события

Native SDK не предоставляет аналоги Flutter rawVariables, WithDetails, trackViewNoShow или triggerEventNoShow. Используйте свой UI и Custom JSON с доступными native-методами.

События TriggerEvent

Событие Описание Основные параметры
AddToCartEvent Добавление товара в корзину value, productId, quantity, currency?, cart?
PurchaseEvent Успешная покупка uniqueTransactionId, value, cart, currency?
RemoveFromCartEvent Удаление товара из корзины value, productId, quantity, currency?, cart?
SyncCartEvent Передача актуального состава корзины value, currency?, cart?
AddToWishlistEvent Добавление в избранное value, productId
SignUpEvent Регистрация пользователя hashedEmail?, cuid?, cuidType?
LoginEvent Авторизация пользователя hashedEmail?, cuid?, cuidType?
CustomEvent Кастомное событие type, name, customProps?

Для LoginEvent и SignUpEvent рекомендуется передавать cuid и cuidType, даже если на уровне класса эти поля не обязательны.

Engagement-типы

Содержимое Публичные типы
Контент ContentImpressionEngagement, ContentVisibleImpressionEngagement, ContentCloseEngagement
Товары ProductClickEngagement, ProductVisibleImpressionEngagement

Передавайте исходные content, campaign и slot из ответа SDK. Публичного ContentClickEngagement нет; ручная отправка engagement не вызывает tracking callback. Условия учёта показов.

UI-компоненты

Компонент Параметры
GravityInlineCompose Обязательные modifier, selector, pageContext, nullable loader
GravityInlineView XML-атрибут selector, затем init(pageContext)
GravityInlineListView XML-атрибут groupSelector, затем init(pageContext)
UISettings fontResId: Int?
@Composable
fun GravityInlineCompose(
    modifier: Modifier,
    selector: String,
    pageContext: PageContext,
    loader: (@Composable () -> Unit)?,
)

// GravityInlineView и GravityInlineListView
fun init(pageContext: PageContext)
interface ProductViewBuilder {
    @Composable
    fun Build(slot: Slot, content: CampaignContent, campaign: Campaign)
}

interface LegacyProductViewBuilder : ProductViewBuilder {
    @Composable
    override fun Build(slot: Slot, content: CampaignContent, campaign: Campaign)

    fun createView(
        context: Context,
        slot: Slot,
        content: CampaignContent,
        campaign: Campaign,
    ): View
}

Примеры карточек.