Быстрый старт
В статье приведен пример быстрой интеграции Altcraft mSDK с Firebase Cloud Messaging (FCM). После выполнения указанных шагов ваше приложение сможет получать push-уведомления Altcraft.
Для использования Huawei Mobile Services или RuStore необходимо добавить соответствующие SDK в проект и реализовать их интерфейсы, используя тот же подход, что показан для Firebase.
Шаг 0. Предварительные условия
- SDK push-провайдеров интегрированы в проект приложения (см. инструкции по интеграции push провайдеров);
- В приложение добавлен класс, расширяющий
Application(); - Все необходимые сущности (ресурс, рассылка, шаблон, база профилей) заранее созданы в платформе Altcraft;
- Для отправки push-уведомлений на устройствах с Android 13 (Tiramisu) требуется явное разрешение пользователя;
- Подготовьте backend вашего приложения к работе с JWT.
Шаг 1. Подключение Altcraft mSDK к приложению
mSDK разбит на модули. Модуль активизируется добавлением его зависимости — отдельная регистрация не требуется: каждый модуль регистрируется автоматически при запуске приложения.
Для push-сценария необходимы два модуля:
android-sdk-core— базовый модуль (инициализация, аутентификация, ретраи);android-sdk-push— push-уведомления.
Добавьте зависимости в файл build.gradle.kts уровня приложения (app level):
dependencies {
implementation("com.altcraft:android-sdk-core:X.Y.Z")
implementation("com.altcraft:android-sdk-push:X.Y.Z")
}
Выполните синхронизацию изменений Gradle.
Шаг 2. Реализация JWTInterface
Выполните реализацию интерфейса SDK, предназначенного для предоставления JWT-токена.
В модуле приложения создайте класс, реализующий JWTInterface, и переопределите getJWT():
import com.altcraft.sdk.platform.authenticate.external.jwt.JWTInterface
class JWTProvider(private val context: Context /** добавьте свойство context если это необходимо*/) : JWTInterface {
override fun getJWT(): String?{
// ваш код, возвращающий актуальный JWT-токен
}
}
getJWT()— синхронная функция. Поток выполнения SDK будет приостановлен до получения JWT;- Рекомендуется, чтобы
getJWT()возвращал значение немедленно из кэша (in-memory,SharedPreferencesилиEncryptedSharedPreferences). Это ускорит выполнение запросов; - Желательно подготовить актуальный JWT как можно раньше, например, на старте приложения, и сохранить его в кэш, чтобы при обращении SDK токен был доступен без задержек. При отсутствии значения допустимо вернуть
null.
Пример реализации с использованием suspend-функции получения токена
import android.content.Context
import com.altcraft.sdk.platform.authenticate.external.jwt.JWTInterface
import kotlinx.coroutines.runBlocking
class JWTProvider(private val context: Context /** добавьте свойство context если это необходимо*/) : JWTInterface {
private suspend fun fetchJwt(context: Context): String? {
// ваш код, возвращающий актуальный JWT-токен
return jwt
}
override fun getJWT(): String? = runBlocking {
fetchJwt(context)
}
}