
Език 🇧🇬 Български
Документация
Първи стъпки
Използване
Удостоверяване
Конфигурация
FastComments Android Library
Това е официалната Android библиотека за FastComments.
Уиджети за коментари на FastComments за Android
Хранилище
Функции 
- 🔄 Живо коментиране с актуализации в реално време
- 📱 Нативни Android UI компоненти
- 🧵 Вложени дискусии с отговори
- 👤 Сигурно SSO удостоверяване
- 👍 Система за гласуване с персонализирани стилове
- 🔔 Потребителски известия и присъствие
- 🔍 Възможности за модериране на коментари
- 📱 Интеграция със социални емисии
- ♾️ Безкрайно превъртане (пагинация)
- 🎨 Изчерпателна поддръжка на теми
Инсталация 
Добавете FastComments SDK към файла build.gradle.kts на вашето приложение:
dependencies {
implementation("com.fastcomments:sdk:0.0.1")
}
Уверете се, че имате хранилището Repsy в settings.gradle.kts на вашия проект:
dependencyResolutionManagement {
repositories {
maven {
url = uri("https://repo.repsy.io/mvn/winrid/fastcomments")
}
// other repositories...
}
}
Основна употреба 
1. Добавете FastCommentsView към вашия layout
<com.fastcomments.sdk.FastCommentsView
android:id="@+id/commentsView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
2. Инициализирайте и конфигурирайте SDK
// Конфигурирайте SDK
val config = CommentWidgetConfig(
"your-tenant-id",
"page-url-id",
"Page Title",
"yourdomain.com",
"Site Name"
)
// Допълнителни опции за конфигурация
config.voteStyle = VoteStyle.UpDown // или VoteStyle.Heart
config.enableInfiniteScrolling = true
config.hasDarkBackground = true // за поддръжка на тъмен режим
// Инициализирайте SDK
val sdk = FastCommentsSDK(config)
// Намерете изгледа за коментари в оформлението си
val commentsView = findViewById<FastCommentsView>(R.id.commentsView)
// Задайте инстанцията на SDK за изгледа
commentsView.setSDK(sdk)
// Заредете коментарите
commentsView.load()
Сигурна SSO автентикация 
Реализирайте сигурно удостоверяване за вашите потребители:
// Създайте данни за потребителя (по възможност на вашия сървър)
val userData = SecureSSOUserData(
"user-id",
"user@example.com",
"User Name",
"https://path-to-avatar.jpg"
)
// Генерирайте SSO token (трябва да се извърши от страна на сървъра!)
val sso = FastCommentsSSO.createSecure("YOUR_API_KEY", userData)
val token = sso.prepareToSend()
// Добавете в конфигурацията
config.sso = token
Интеграция на емисия 
Показване на емисия в стил социални медии с коментари:
// Конфигурирайте SDK-то
CommentWidgetConfig config = new CommentWidgetConfig();
config.tenantId = "your-tenant-id";
config.urlId = "page-url-id";
// Инициализирайте Feed SDK
FastCommentsFeedSDK feedSDK = new FastCommentsFeedSDK(config);
// Настройте изгледа на емисията
FastCommentsFeedView feedView = findViewById(R.id.feedView);
feedView.setSDK(feedSDK);
// Задайте слушател за взаимодействия
feedView.setFeedViewInteractionListener(new FastCommentsFeedView.OnFeedViewInteractionListener() {
@Override
public void onFeedLoaded(List<FeedPost> posts) {
// Емисията е заредена успешно
}
@Override
public void onFeedError(String errorMessage) {
// Обработете грешките
}
@Override
public void onPostSelected(FeedPost post) {
// Потребителят избра публикация
}
@Override
public void onCommentsRequested(FeedPost post) {
// Покажете коментарите за публикацията
CommentsDialog dialog = new CommentsDialog(context, post, feedSDK);
dialog.show();
}
});
// Заредете емисията
feedView.load();
Интеграция на чат на живо 
Добавете интерфейс за чат в реално време към вашето приложение:
// Добавете LiveChatView към вашия XML layout
// <com.fastcomments.sdk.LiveChatView
// android:id="@+id/liveChatView"
// android:layout_width="match_parent"
// android:layout_height="match_parent" />
// Създайте конфигурация за SDK
val config = CommentWidgetConfig().apply {
tenantId = "your-tenant-id"
urlId = "chat-room-identifier"
pageTitle = "Chat Room Name"
}
LiveChatView.setupLiveChatConfig(config)
// По избор: Добавете удостоверяване на потребителя
val userData = SimpleSSOUserData(
"User Name",
"user@example.com",
"https://path-to-avatar.jpg"
)
val sso = FastCommentsSSO(userData)
config.sso = sso.prepareToSend()
// Инициализирайте SDK
val sdk = FastCommentsSDK().configure(config)
// Настройте изгледа за чат на живо
val liveChatView = findViewById<LiveChatView>(R.id.liveChatView)
liveChatView.setSDK(sdk)
liveChatView.load()
// Не забравяйте управлението на жизнения цикъл
override fun onResume() {
super.onResume()
sdk.refreshLiveEvents()
}
override fun onDestroy() {
super.onDestroy()
sdk.cleanup()
}
Примерни проекти 
Разгледайте тези демонстрационни реализации:
- Основен пример за коментари
- Имплементация на защитен SSO
- Пример за интеграция на емисия
- Пример за чат на живо
- Пример за диалог за коментари
Опции за конфигурация 
SDK предоставя много опции за конфигурация чрез класа CommentWidgetConfig:
| Option | Description |
|---|---|
tenantId |
ID на вашия FastComments акаунт |
urlId |
ID, представляващ текущата страница |
sso |
SSO токен за удостоверяване |
allowAnon |
Позволява анонимно коментиране |
voteStyle |
Стил на гласуване UpDown или Heart |
hideAvatars |
Скрива потребителските аватари |
hasDarkBackground |
Показва тъмен режим |
customCSS |
Персонализирани CSS стилове |
enableInfiniteScrolling |
Разрешава безкрайно превъртане за странициране |
readonly |
Деактивира коментирането, но показва коментарите |
disableVoting |
Деактивира функционалността за гласуване |
disableLiveCommenting |
Деактивира актуализации в реално време |
| --- |
Пълна персонализация на темата 
Всички бутони и елементи от потребителския интерфейс в FastComments SDK поддържат теми. Използвайте FastCommentsTheme.Builder за пълен контрол върху брандирането на вашето приложение.
Програмно темизиране (Препоръчително)
val theme = FastCommentsTheme.Builder()
// Бутоните за действие: Изпрати, гласуване, меню, харесване/споделяне
.setActionButtonColor(Color.parseColor("#FF1976D2"))
// Бутоните за отговор: Бутоните за отговор на коментар
.setReplyButtonColor(Color.parseColor("#FF4CAF50"))
// Превключващи бутони: Покажи/скрий отговори
.setToggleRepliesButtonColor(Color.parseColor("#FFFF5722"))
// Бутоните за "зареди повече": Бутони за пагинация
.setLoadMoreButtonTextColor(Color.parseColor("#FF9C27B0"))
.setPrimaryColor(Color.parseColor("#FF6200EE"))
.setLinkColor(Color.parseColor("#FF1976D2"))
.setDialogHeaderBackgroundColor(Color.parseColor("#FF333333"))
.build()
// Приложете темата
sdk.setTheme(theme)
Бързо презаписване на цветовете
Презапишете цветови ресурси във вашия colors.xml за лесно брандиране:
<!-- В res/values/colors.xml на вашето приложение -->
<resources>
<!-- Променете всички основни елементи на UI -->
<color name="primary">#FF1976D2</color>
<!-- Или персонализирайте специфични типове бутони -->
<color name="fastcomments_action_button_color">#FF1976D2</color>
<color name="fastcomments_reply_button_color">#FF4CAF50</color>
<color name="fastcomments_toggle_replies_button_color">#FFFF5722</color>
<color name="fastcomments_load_more_button_text_color">#FF9C27B0</color>
</resources>
Покритие на тематизираните бутони
Всеки бутон в SDK поддържа теми:
- Бутоните за изпращане, бутоните за гласуване, бутоните на менюто, бутоните за отговор
- Бутоните за показване/скриване на отговори, бутоните 'зареди повече'
- Бутоните за действия във фийда (харесване, коментар, споделяне)
- Бутоните в диалози (изпрати, отмени, запази)
- Динамични бутони за задачи в публикациите във фийда
За подробна документация относно темите, вижте THEMING.md.
Управление на паметта 
Предотвратяване на изтичания на памет
За да предотвратите изтичания на памет при използване на FastComments изгледи в Activities или Fragments, винаги извиквайте cleanup() когато изгледът вече не е необходим:
В Activities:
@Override
protected void onDestroy() {
super.onDestroy();
// Почистете FastComments изгледите, за да предотвратите изтичания на паметта
if (feedView != null) {
feedView.cleanup();
}
if (commentsView != null) {
commentsView.cleanup();
}
}
В Fragments:
@Override
public void onDestroyView() {
super.onDestroyView();
// Почистете FastComments изгледите когато изгледът на фрагмента бъде унищожен
if (feedView != null) {
feedView.cleanup();
feedView = null;
}
}
@Override
public void onDestroy() {
super.onDestroy();
// Допълнително почистване когато фрагментът бъде унищожен
if (feedSDK != null) {
feedSDK.cleanup();
feedSDK = null;
}
}
При смяна на Fragments:
// Преди да замените или премахнете фрагмент, съдържащ FastComments изгледи
Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.container);
if (currentFragment instanceof YourFragmentWithFeedView) {
((YourFragmentWithFeedView) currentFragment).cleanupFeedView();
}
// След това продължете с транзакцията на фрагмента
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, newFragment)
.commit();
Важно: Винаги извиквайте методите cleanup(), за да предотвратите изтичания на паметта, особено когато:
- Activities се унищожават
- Изгледите на Fragments се унищожават
- Смяна между Fragments
- Напускане на екрани с FastComments компоненти
Нужна помощ?
Ако срещнете проблеми или имате въпроси относно Android библиотеката, моля:
Принос
Приносите са добре дошли! Моля посетете GitHub хранилището за указания за принос.