Инструкции по миграции
Инструкции по миграции на новые версии библиотек
Переход на 4.0.0
Изменения в работе push библиотеки Chat Center 4.0.0
- Удалена зависимость от библиотеки push-lite.
- Удалены классы, использовавшиеся в интеграции:
- im.threads.push.ThreadsPushBroadcastReceiver
- im.threads.push.ThreadsPushFcmIntentService
Для корректной работы push необходимо в приложении определить собственного наследника https://firebase.google.com/docs/reference/android/com/google/firebase/messaging/FirebaseMessagingService Для передачи токена в соответствующем методе наследника нужно использовать ChatCenterPushMessageHelper.setFcmToken(...). Для обработки входящего пуша нужно использовать ChatCenterPushMessageHelper.process(...). Этот метод будет обрабатывать только пуши, содержащие флаг принадлежности к edna Chat Center origin=threads.
Пример кода интеграции:
override fun onNewToken(token: String) {
super.onNewToken(token)
ChatCenterPushMessageHelper.setFcmToken(token)
//your custom handling here
}
override fun onMessageReceived(message: RemoteMessage) {
super.onMessageReceived(message)
ChatCenterPushMessageHelper.process(this, message.data)
//your custom handling here
}
}
Переход с 4.1.0 на 4.2.0
Изменения в работе библиотеки Chat Center 4.2.0
- Добавлен обязательный параметр
datastoreUrl: String
, который необходимо передавать перед стартом библиотеки.
Если вы не разделяете пути для отправки файлов и для работы с backend API, вы можете передать одинаковые параметры для serverBaseUrl
и для datastoreUrl
Пример реализации через ConfigBuilder
:
- Kotlin
- Java
val configBuilder = ConfigBuilder(this) // this - android context
val transportConfig = getTransportConfig(this)
configBuilder.serverBaseUrl(transportConfig.baseUrl)
.datastoreUrl(transportConfig.datastoreUrl)
.threadsGateUrl(transportConfig.threadsGateUrl)
.threadsGateProviderUid(transportConfig.threadsGateProviderUid)
fun getTransportConfig(ctx: Context?): TransportConfig? {
val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(ctx)
val baseUrl = sharedPreferences.getString(PREF_SERVER_BASE_URL, null)
?: return null
val datastoreUrl = sharedPreferences.getString(PREF_DATASTORE_URL, null)
?: return null
val threadsGateUrl = sharedPreferences.getString(PREF_THREADS_GATE_URL, null)
?: return null
val threadsGateProviderUid =
sharedPreferences.getString(PREF_THREADS_GATE_PROVIDER_UID, null)
?: return null
return TransportConfig(
baseUrl,
datastoreUrl,
threadsGateUrl,
threadsGateProviderUid
)
}
ConfigBuilder configBuilder = new ConfigBuilder(this); // this - android context
TransportConfig transportConfig = getTransportConfig(this);
configBuilder.serverBaseUrl(transportConfig.baseUrl)
.datastoreUrl(transportConfig.datastoreUrl)
.threadsGateUrl(transportConfig.threadsGateUrl)
.threadsGateProviderUid(transportConfig.threadsGateProviderUid);
TransportConfig getTransportConfig(Context ctx) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(ctx)
String baseUrl = sharedPreferences.getString(PREF_SERVER_BASE_URL, null)
?: return null
String datastoreUrl = sharedPreferences.getString(PREF_DATASTORE_URL, null)
?: return null
String threadsGateUrl = sharedPreferences.getString(PREF_THREADS_GATE_URL, null)
?: return null
String threadsGateProviderUid =
sharedPreferences.getString(PREF_THREADS_GATE_PROVIDER_UID, null)
?: return null
return new TransportConfig(
baseUrl,
datastoreUrl,
threadsGateUrl,
threadsGateProviderUid
)
}
Также вы можете прописать параметр через манифест:
<meta-data
android:name="im.threads.getDatastoreUrl"
android:value="http://datastore.yourcompany.com/"/>
Переход с 4.4.0 на 4.5.0
Функционал селфи более не поддерживается. Убран метод setSelfieEnabled(boolean enabled)
Переход с 4.5.0 на 4.6.0
В версии 4.6.0 был произведен рефакторинг SDK, вследствие чего изменились некоторые импорты. Классы, которые поменяли свое расположение, теперь имеют в имени пакета путь ui
или business
.
Перестал быть доступен класс PrefUtils
, через который можно было получить прямой доступ к настройкам SDK. Теперь для этого необходимо использовать методы из публичного API.
Переход с 4.9.0 на 4.10.0
Первое изменение - аттачменты теперь отключены по умолчанию.
Для включения возможности прикрепления вложения необходимо в манифесте установить в true
следующий параметр:
<meta-data
android:name="im.threads.attachmentEnabled"
tools:replace="android:value"
android:value="@bool/attachment_enabled"/>
Или можно сделать это программно с помощью метода showAttachmentsButton()
при создании ConfigBuilder
:
val configBuilder = ConfigBuilder(this).showAttachmentsButton()
ThreadsLib.init(configBuilder)
Второе изменение - вероятно, вам может понадобиться донастроить отображение изображений. В версии 4.10 изменились пропорции отображаемых изображений, также добавилась возможность отображать бордер для изображения и регулировать его размер. Подробнее об этом можно почитать в разделе "Отступы изображения от края баббла" раздела "Настройка внешнего вида"
Также теперь не нужно при вызове ThreadsLib.logoutClient()
передавать clientId
.
Переход с 4.12.0 на 4.13.0
В версии 4.13 к именам ресурсов добавился префикс "ecc" и исчез префикс "threads". То есть, например,
если раньше ресурс назывался threads_ic_camera_42dp
, то теперь он будет называться ecc_ic_camera_42dp
.
Или если раньше префикса не было, например, у ресурса ic_clear_gray_30dp
, то теперь он называется
ecc_ic_clear_gray_30dp
. Это сделано для устранения возможных коллизий с существующими ресурсами в
других модулях.
В данной версии также появилась возможность кастомизации иконок статусов для исходящих сообщений.
Сделать это можно с помощью методов setMessageSendingResources(...)
setMessageSentResources(...)
,
setMessageDeliveredResources(...)
, setMessageReadResources(...)
.
Также в данной версии изменился алгоритм отправки сообщений. Теперь он учитывает больше статусов,
таких как delivered
, enqueued
, иначе по умолчанию обрабатываются иконки статусов. Так, например,
по умолчанию иконка отправки не будет изменена, пока от сервера не придет статус delivered
.
Переход с 4.13.0 на 4.14.0
compileSdkVersion увеличен до 33 версии
Переход с 4.16.0 на 4.17.0
Была удалена встроенная камера (класс CameraActivity
, метод setUseExternalCameraApp
). С текущей версии всегда будет
открываться стандартное приложение камеры.
Переход с 4.17.0 на 4.18.0
Удален метод ThreadsLib.applyChatStyle(ChatStyle chatStyle)
. Вместо него добавлены два метода:
ThreadsLib.applyLightTheme(ChatStyle chatStyle) // для светлой темы
ThreadsLib.applyDarkTheme(ChatStyle chatStyle) // для темной темы
Если темная тема не поддерживается, достаточно вызвать applyLightTheme(ChatStyle chatStyle)
.