Инициализация
Результат шага
Приложение запускается без ошибок, в Logcat появляется "SDK init success" (либо ошибка в onFailure, по которой можно сразу диагностировать проблему).
Carrot.setup нужно вызывать один раз за жизненный цикл процесса — обычно в Application.onCreate(). Передавайте applicationContext и API Key из Подготовительных работ.
Метод для инициализации
import io.carrotquest_sdk.android.Carrot
Carrot.setup(this, "API KEY", object : Carrot.Callback<Boolean> {
override fun onResponse(result: Boolean) {
if (result) println("SDK init success")
}
override fun onFailure(e: Throwable?) {
println("SDK init error: ${e?.message}")
}
})import io.carrotquest_sdk.android.Carrot;
Carrot.setup(this, "API KEY", new Carrot.Callback<Boolean>() {
@Override
public void onResponse(Boolean result) {
if (Boolean.TRUE.equals(result)) {
System.out.println("SDK init success");
}
}
@Override
public void onFailure(Throwable e) {
System.out.println("SDK init error: " + (e != null ? e.getMessage() : null));
}
});Параметры:
context— Android-контекст, лучшеapplicationContext;apiKey—API Keyиз личного кабинета;Callback<Boolean>— необязательный, но рекомендуемый: вonResponse(true)SDK сообщает об успешной инициализации, вonFailure— об ошибке (обычно это отсутствие сети или невалидный ключ). Существует и перегрузкаsetup(context, apiKey)без колбэка — её удобно использовать, когда ошибки уже отлавливаются другим способом.
Если в Logcat пришёл onFailure, проверьте сетевое соединение и правильность ключа (типичная ошибка — перепутать API Key и User Auth Key местами).
Авторизация пользователей
Если в приложении есть свой логин, передайте userId в Carrot quest, чтобы события и сообщения склеивались в одного пользователя. Способа два:
Carrot.auth(userId, userAuthKey, callback)—userAuthKeyхранится в самом приложении. Простой вариант, подходит, если у вас нет бэкенда.Carrot.hashedAuth(userId, hash, callback)—hashгенерируется на вашем бэкенде. Безопасный вариант.
В обоих случаях колбэк имеет тип Callback<String> — в onResponse приходит userId авторизованного пользователя.
Важно
Вызывайте auth/hashedAuth внутри onResponse у setup. Если делать это раньше или параллельно, SDK успеет создать анонимного пользователя, и в кабинете появятся лишние записи без склейки.
Передача ID напрямую
Carrot.setup(this, apiKey, object : Carrot.Callback<Boolean> {
override fun onResponse(result: Boolean) {
if (!result) return
Carrot.auth(userId, userAuthKey, object : Carrot.Callback<String> {
override fun onResponse(authedUserId: String?) {
println("Carrot quest SDK auth ok, userId=$authedUserId")
}
override fun onFailure(e: Throwable?) {
println("Carrot quest SDK auth error: ${e?.message}")
}
})
}
override fun onFailure(e: Throwable?) { /* setup failed */ }
})Carrot.setup(this, apiKey, new Carrot.Callback<Boolean>() {
@Override
public void onResponse(Boolean result) {
if (!Boolean.TRUE.equals(result)) return;
Carrot.auth(userId, userAuthKey, new Carrot.Callback<String>() {
@Override
public void onResponse(String authedUserId) {
System.out.println("Carrot quest SDK auth ok, userId=" + authedUserId);
}
@Override
public void onFailure(Throwable e) {
System.out.println("Carrot quest SDK auth error: " + (e != null ? e.getMessage() : null));
}
});
}
@Override
public void onFailure(Throwable e) { /* setup failed */ }
});Передача через hash
Carrot.setup(this, apiKey, object : Carrot.Callback<Boolean> {
override fun onResponse(result: Boolean) {
if (!result) return
Carrot.hashedAuth(userId, hash, object : Carrot.Callback<String> {
override fun onResponse(authedUserId: String?) {
println("Carrot quest SDK auth ok, userId=$authedUserId")
}
override fun onFailure(e: Throwable?) {
println("Carrot quest SDK auth error: ${e?.message}")
}
})
}
override fun onFailure(e: Throwable?) { /* setup failed */ }
})Carrot.setup(this, apiKey, new Carrot.Callback<Boolean>() {
@Override
public void onResponse(Boolean result) {
if (!Boolean.TRUE.equals(result)) return;
Carrot.hashedAuth(userId, hash, new Carrot.Callback<String>() {
@Override
public void onResponse(String authedUserId) {
System.out.println("Carrot quest SDK auth ok, userId=" + authedUserId);
}
@Override
public void onFailure(Throwable e) {
System.out.println("Carrot quest SDK auth error: " + (e != null ? e.getMessage() : null));
}
});
}
@Override
public void onFailure(Throwable e) { /* setup failed */ }
});