Skip to content
Snippets Groups Projects
README.md 5.04 KiB
Newer Older
Kerimtay Askar's avatar
Kerimtay Askar committed
# Ultra Cloud Sample

## Как подключить

Чтобы подключить sdk, необходимо добавить данные приватного репозитория:

```groovy
repositories {
    google()
    mavenCentral()
    maven {
        url 'https://gitlab.typi.team/api/v4/projects/19/packages/maven'
        name 'GitLab'
        credentials(HttpHeaderCredentials) {
            name = 'Deploy-Token'
            value = '{some-token}'
        }
        authentication {
            header(HttpHeaderAuthentication)
        }
    }
}
```

Токен нужно получить у соответствующих лиц.
После добавления приватного репозитория, добавляем зависимость в **gradle файл**:

```groovy
implementation 'com.typi.ultra:ultra:x.x.x'
```

Пример подключения можете посмотреть в модуле `sample`.

## Немного о Component Holder

При разработке был использован подход Component Holder. Если вы не знакомы с этим подходом, рекомендую прочитать статью
[Ленивая склейка модулей Android-приложения](https://habr.com/ru/articles/536106/).

### Инициализация ComponentHolder

Чтобы инициализировать `UltraComponentHolder` нужно передать зависимости. Зависимости обьявлены в `UltraDependencies`
который содержит интерфейсы которые нужно реализовать. Теперь **component holder** готов к использованию.

Вы можете внедрить предоставляемые классы в свой DI граф. Получить предоставляемые классы нужно через
`UltraComponentHolder.get()` которая возвращает интерфейс `UltraApi`. В нем содержатся необходимые классы.

# Начало работы

Kerimtay Askar's avatar
Kerimtay Askar committed
Необходимо передать конфигурацию и реализовать все интерфейсы-делегаты `CloudDependencies` для работы SDK. Также нужно
добавить FileProvider в манифест для корректной работы файлов.
Kerimtay Askar's avatar
Kerimtay Askar committed

## Конфигурация

Kerimtay Askar's avatar
Kerimtay Askar committed
В UltraConfiguration передаются такие данные как, режим работы SDK, сетевые и пуш настройки, ключ шифрования БД и режим
работы аватарок.
Kerimtay Askar's avatar
Kerimtay Askar committed

## Реализация делегатов

Делегаты созданы для получения данных клиента со стороны SDK.

- `UltraAuthDelegate`: используется для получения необходимых данных для авторизации;
- `UltraThemeDelegate`: используется для переопределения дизайн-системы;
- `UltraFeatureToggle`: используется для вкл/выкл некоторых функциональностей;
- `UltraErrorRecorder`: используется для передачи ошибок;
- `UltraLocaliseDelegate`: используется для получения локализации.

Kerimtay Askar's avatar
Kerimtay Askar committed
ВАЖНО: Перед запуском SDK, нужно вызвать `UltraInitializer.init` для инициализации компонентов. Для запуска SDK, нужно
пройти авторизацию.
Kerimtay Askar's avatar
Kerimtay Askar committed

## Авторизация

Kerimtay Askar's avatar
Kerimtay Askar committed
После авторизации нужно вызвать метод `UltraAuthProvider.login`, куда нужно передать `UltraAuthCredential`. (Для **Cloud
** версий нужно использовать `JwtToken`).
Kerimtay Askar's avatar
Kerimtay Askar committed

После выхода из профиля, нужно вызвать метод `UltraAuthProvider.logout` для очистки данных.

## Пуш-уведомления

Для создания канала нужно вызвать метод `UltraPushProvider.createNotificationChannel`.

При обновлений пуш-токена нужно вызвать метод `UltraPushProvider.onNewToken`.

При получений пуш-уведомления, нужно вызвать метод `UltraPushProvider.parseUltraPush`, которая возвращает
Kerimtay Askar's avatar
Kerimtay Askar committed
модель `UltraPush`. Если результат `UltraPush.isSdkPush == true`, то нужно вызвать метод
`UltraPushProvider.showNotification`.
Kerimtay Askar's avatar
Kerimtay Askar committed

## Навигация

Kerimtay Askar's avatar
Kerimtay Askar committed
Навигация релизовывается на стороне клиента, так как SDK предоставляет только экраны. Необходимые экраны вы можете найти
в `UltraNavigator`. При желаний, в нужных callback-ах можете открывать свои экраны.
Kerimtay Askar's avatar
Kerimtay Askar committed

## Google Maps

Нужно добавить Google Maps API_KEY в `AndroidManifest.xml` для отображения карт в чате.