Запись событий
Убедитесь, что предыдущие шаги выполнены успешно
- SDK подключено к проекту: добавлена зависимость
io.carrotquest:android-sdk(см. Установка) - Ключи взяты из раздела для разработчика (не из webApi): Ключи для SDK
- Инициализация выполнена успешно и в Logcat появилась надпись “SDK init success”
Результат шага
- События добавляются в карточку пользователя и отображаются корректно
Метод отправки событий
Метод для отправки событий: trackEvent
import io.carrotquest_sdk.android.Carrot
Carrot.trackEvent("eventName")import io.carrotquest_sdk.android.Carrot;
Carrot.trackEvent("eventName");Параметры события передаются в виде строки, внутри которой должен быть JSON. Примерно вот так:
val strJSON: String = "{\"Приложение\": \"Android\"}"
Carrot.trackEvent("eventName", strJSON)String strJSON = "{\"Приложение\": \"Android\"}";
Carrot.trackEvent("eventName", strJSON);Трекинг экранов
Для запуска триггерных сообщений на определённых экранах можно передавать названия экранов через trackScreen:
val screenName = "CatalogScreen"
Carrot.trackScreen(screenName)String screenName = "CatalogScreen";
Carrot.trackScreen(screenName);Трекинг UTM-меток
Метод trackUtm извлекает UTM-параметры из строки запроса переданного URL и фиксирует их как события и свойства пользователя. Типичный сценарий — вызов при открытии приложения по диплинку:
import io.carrotquest_sdk.android.Carrot
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
intent?.data?.toString()?.let { Carrot.trackUtm(it) }
}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():
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}")
}
})
}
}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));
}
});
}
}Запись события отписки от пушей
import io.carrotquest_sdk.android.Carrot
Carrot.pushNotificationsUnsubscribe()
val strJSON = "{\"Пользователь\": \"$userId\"}"
Carrot.trackEvent("Отписался от пушей", strJSON)import io.carrotquest_sdk.android.Carrot;
Carrot.pushNotificationsUnsubscribe();
String strJSON = "{\"Пользователь\": \"" + userId + "\"}";
Carrot.trackEvent("Отписался от пушей", strJSON);Методы WebAPI
Если у вас возникли вопросы, вы можете посмотреть, как похожая механика работает в методах WebAPI, можно найти по ссылке: https://developers.carrotquest.io/webapi/endpoints/