Skip to content

Запись событий

Убедитесь, что предыдущие шаги выполнены успешно
  • SDK подключено к проекту: добавлена зависимость io.carrotquest:android-sdk (см. Установка)
  • Ключи взяты из раздела для разработчика (не из webApi): Ключи для SDK
  • Инициализация выполнена успешно и в Logcat появилась надпись “SDK init success”
Результат шага
  • События добавляются в карточку пользователя и отображаются корректно

Метод отправки событий

Метод для отправки событий: trackEvent

kotlin
import io.carrotquest_sdk.android.Carrot

Carrot.trackEvent("eventName")
java
import io.carrotquest_sdk.android.Carrot;

Carrot.trackEvent("eventName");

Параметры события собираются типобезопасным билдером EventParams — SDK сам сериализует значения в JSON (передавать JSON-строку вручную не нужно):

kotlin
import io.carrotquest_sdk.android.models.EventParams

Carrot.trackEvent("eventName", EventParams.builder()
    .put("Приложение", "Android")
    .build())
java
import io.carrotquest_sdk.android.models.EventParams;

Carrot.trackEvent("eventName", EventParams.builder()
    .put("Приложение", "Android")
    .build());

Метод put(...) перегружен для String, Int, Long, Double и Boolean — тип значения сохраняется в JSON:

kotlin
Carrot.trackEvent("purchase", EventParams.builder()
    .put("item", "book")
    .put("price", 9.99)
    .put("gift", true)
    .build())
java
Carrot.trackEvent("purchase", EventParams.builder()
    .put("item", "book")
    .put("price", 9.99)
    .put("gift", true)
    .build());

Трекинг экранов

Для запуска триггерных сообщений на определённых экранах можно передавать названия экранов через trackScreen:

kotlin
val screenName = "CatalogScreen"
Carrot.trackScreen(screenName)
java
String screenName = "CatalogScreen";
Carrot.trackScreen(screenName);

Трекинг UTM-меток

Метод trackUtm извлекает UTM-параметры из строки запроса переданного URL и фиксирует их как события и свойства пользователя. Типичный сценарий — вызов при открытии приложения по диплинку:

kotlin
import io.carrotquest_sdk.android.Carrot

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    intent?.data?.toString()?.let { Carrot.trackUtm(it) }
}
java
import io.carrotquest_sdk.android.Carrot;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (getIntent() != null && getIntent().getData() != null) {
        Carrot.trackUtm(getIntent().getData().toString());
    }
}

Кейсы

Какие примеры событий могут быть и как их настроить:

Запись события входа в приложение

Событие входа в приложение можно повесить на onResponse колбэка Carrot.setup — так оно гарантированно отправится после успешной инициализации SDK. Удобное место — Application.onCreate():

kotlin
import android.app.Application
import io.carrotquest_sdk.android.Carrot

class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        Carrot.setup(this, "API KEY", object : Carrot.Callback<Boolean> {
            override fun onResponse(result: Boolean) {
                if (result) Carrot.trackEvent("Зашел в приложение")
            }
            override fun onFailure(e: Throwable?) {
                println("SDK init error: ${e?.message}")
            }
        })
    }
}
java
import android.app.Application;
import io.carrotquest_sdk.android.Carrot;

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Carrot.setup(this, "API KEY", new Carrot.Callback<Boolean>() {
            @Override
            public void onResponse(Boolean result) {
                if (Boolean.TRUE.equals(result)) {
                    Carrot.trackEvent("Зашел в приложение");
                }
            }
            @Override
            public void onFailure(Throwable e) {
                System.out.println("SDK init error: " + (e != null ? e.getMessage() : null));
            }
        });
    }
}

Запись события отписки от пушей

kotlin
import io.carrotquest_sdk.android.Carrot
import io.carrotquest_sdk.android.models.EventParams

Carrot.pushNotificationsUnsubscribe()

Carrot.trackEvent("Отписался от пушей", EventParams.builder()
    .put("Пользователь", userId)
    .build())
java
import io.carrotquest_sdk.android.Carrot;
import io.carrotquest_sdk.android.models.EventParams;

Carrot.pushNotificationsUnsubscribe();

Carrot.trackEvent("Отписался от пушей", EventParams.builder()
    .put("Пользователь", userId)
    .build());

Методы WebAPI

Если у вас возникли вопросы, вы можете посмотреть, как похожая механика работает в методах WebAPI, можно найти по ссылке: https://developers.carrotquest.io/webapi/endpoints/