Skip to content

FAQ

Общие вопросы

Где искать платформенные особенности интеграции?

Для каждой платформы есть отдельный раздел документации и собственный FAQ:

Как правильно вызывать setup() и auth()?

setup() нужно вызывать один раз за жизненный цикл приложения, а не на каждом экране или при каждом открытии отдельного раздела.

Метод auth() следует вызывать только после успешного завершения setup() и после проверки, что SDK уже инициализировано. Если запускать эти методы одновременно или в неверном порядке, можно получить ошибки авторизации и нестабильное поведение SDK.

Какие зависимости и ключи использовать для Carrot quest и Dashly?

Для Carrot quest и Dashly используются разные зависимости и разные ключи. Их нельзя смешивать между собой.

Если вы подключаете Carrot quest SDK, убедитесь, что используете зависимость и ключи именно от Carrot quest. Если используется международная сборка Dashly, необходимо подключать соответствующую зависимость и ключи от Dashly.

Если использовать ключи от одного продукта в сборке другого, SDK не сможет корректно авторизоваться.

Как настроить репозитории и coreLibraryDesugaring для Android и Flutter?

Для Android-проекта необходимо убедиться, что подключен корректный Maven-репозиторий SDK.

Для Flutter-проектов, особенно в release-сборках и при использовании актуальных версий Android Gradle Plugin, может потребоваться включить coreLibraryDesugaringEnabled true и добавить зависимость desugar_jdk_libs.

Если этих настроек нет, возможны ошибки при скачивании зависимостей или при сборке release-версии приложения.

Почему push-уведомления могут работать по-разному в фоне и при открытом приложении?

Когда приложение закрыто или находится в фоне, доставка push-уведомлений обычно выполняется через системные push-сервисы: FCM, Huawei Push Kit или APNs.

Когда приложение открыто, часть уведомлений может приходить через веб-сокеты SDK. Поэтому поведение уведомлений в foreground и background может отличаться.

Это важно учитывать при проверке доставки, диагностике дублей и разборе кейсов, когда push приходит даже при изменении конфигурации системного push-канала.

Можно ли перехватывать push-уведомления и сохранять их в собственную историю уведомлений?

Да. Для этого нужно обрабатывать уведомления на уровне платформы.

На Android обычно используются BroadcastReceiver для уведомлений, полученных через сокеты, и FirebaseMessagingService.onMessageReceived для уведомлений, полученных через FCM. На iOS для таких задач используется NotificationServiceExtension.

Такой подход позволяет сохранять текст и метаданные уведомления внутри собственного раздела приложения.

Поддерживается ли React Native?

Нет, React Native официально не поддерживается.

Если приложение написано на React Native, интеграция возможна только через собственные мосты к нативным SDK iOS и Android. В таком сценарии реализация и сопровождение полностью остаются на стороне приложения.

Как правильно использовать auth и hashedAuth?

Если используется метод auth, передавайте в него данные так, как описано в документации вашей платформы. В этом сценарии часть логики расчёта выполняется SDK.

Если используется hashedAuth, в SDK передаётся уже готовый хэш, который должен быть рассчитан на сервере. Для вычисления HMAC SHA-256 в качестве сообщения передаётся только userId, а в качестве ключа используется userAuthKey.

Не храните userAuthKey в клиентском коде, если используете серверный сценарий с hashedAuth.

Какие ограничения есть у кастомизации и UI?

У SDK есть платформенные ограничения, которые важно учитывать заранее.

Во Flutter тема интерфейса зависит от системных настроек устройства. На планшетах Android чат может открываться в альбомной ориентации согласно текущему дизайну SDK.

На iOS для записи событий рекомендуется использовать актуальные методы API, указанные в документации вашей версии SDK. Это помогает избежать ошибок интеграции и неоднозначного поведения при передаче параметров.

Как правильно выполнять выход пользователя и смену аккаунта?

При выходе пользователя из аккаунта необходимо корректно сбрасывать состояние SDK.

Для этого используйте штатные методы выхода или деинициализации на соответствующей платформе, например deInit() на Android и logout() на iOS. Это особенно важно, если на одном устройстве могут входить разные пользователи.

Если не очищать состояние SDK, сообщения, push-уведомления и данные профиля могут остаться привязанными к предыдущей сессии.

Чем отличаются pushNotificationsUnsubscribe() и pushCampaignsUnsubscribe()?

Эти методы решают разные задачи.

pushNotificationsUnsubscribe() используется для отписки устройства от push-уведомлений. pushCampaignsUnsubscribe() относится к подписке на push-кампании на уровне профиля в Carrot quest.

Если у вас есть требования по приватности, пользовательским настройкам подписки или внутренним сценариям согласия, важно выбрать правильный метод в зависимости от того, нужно ли отключить уведомления на устройстве или изменить маркетинговую подписку профиля.

Как настроить push-уведомления для Huawei-устройств?

На устройствах Huawei без Google Mobile Services стандартный сценарий через FCM может не работать.

Для таких устройств необходимо использовать Huawei Push Kit и выполнять отдельную настройку HMS-сценария. Если ваше приложение поддерживает аудиторию с Huawei-устройствами, эту настройку лучше предусмотреть заранее.

Что учитывать на Android 15 из-за edge-to-edge интерфейса?

Начиная с Android 15, система активнее использует edge-to-edge отображение интерфейса. Из-за этого элементы чата или служебные экраны могут визуально смещаться под статус-бар или системную навигацию, если в приложении не настроена корректная работа с Window Insets.

Если вы адаптируете приложение под Android 15, проверьте safe area и поведение экранов с SDK в полноэкранном режиме.