FastComments.com

FastComments Android Library

Це офіційна бібліотека Android для FastComments.

Віджети коментарів FastComments для Android

Репозиторій

Переглянути на GitHub


Можливості Internal Link

  • 🔄 Живе коментування з оновленнями в реальному часі
  • 📱 Нативні компоненти інтерфейсу Android
  • 🧵 Дискусії у вигляді ниток з відповідями
  • 👤 Безпечна автентифікація SSO
  • 👍 Система голосування з налаштовуваними стилями
  • 🔔 Сповіщення користувачів та індикація присутності
  • 🔍 Можливості модерації коментарів
  • 📱 Інтеграція соціальної стрічки
  • ♾️ Пагінація з безкінечним прокручуванням
  • 🎨 Всеохопна система тем

Вимоги Internal Link

  • Android SDK 26+ (Android 8.0 Oreo або новіша)
  • Java 8+

Встановлення Internal Link

Додайте 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")
        }
        // інші репозиторії...
    }
}

Основне використання Internal Link

1. Додайте FastCommentsView до вашого макета

<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)

// Знайдіть FastCommentsView у вашому макеті
val commentsView = findViewById<FastCommentsView>(R.id.commentsView)

// Встановіть екземпляр SDK для view
commentsView.setSDK(sdk)

// Завантажте коментарі
commentsView.load()

Безпечна SSO-аутентифікація Internal Link

Реалізуйте безпечну аутентифікацію для ваших користувачів:

// Створіть дані користувача (бажано на вашому сервері)
val userData = SecureSSOUserData(
    "user-id",
    "user@example.com",
    "User Name",
    "https://path-to-avatar.jpg"
)

// Згенеруйте SSO-токен (повинно виконуватися на сервері!)
val sso = FastCommentsSSO.createSecure("YOUR_API_KEY", userData)
val token = sso.prepareToSend()

// Додайте до конфігурації
config.sso = token

Інтеграція стрічки Internal Link

Відобразити стрічку у стилі соціальної мережі з коментарями:

// Налаштувати 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();
    }
});

// Load the feed
feedView.load();

Інтеграція чату в реальному часі Internal Link

Додайте інтерфейс чату в реальному часі до вашого додатка:

// Додайте LiveChatView до вашого XML-макета
// <com.fastcomments.sdk.LiveChatView
//     android:id="@+id/liveChatView"
//     android:layout_width="match_parent"
//     android:layout_height="match_parent" />

// Create a configuration for the 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)

// Налаштуйте LiveChatView
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()
}

Приклади проєктів Internal Link


Ознайомтеся з цими демонстраційними реалізаціями:


Параметри конфігурації Internal Link


SDK надає багато параметрів конфігурації через клас CommentWidgetConfig:

Опція Опис
tenantId ID вашого облікового запису FastComments
urlId ID, що представляє поточну сторінку
sso Токен SSO для автентифікації
allowAnon Дозволити анонімне коментування
voteStyle Стиль голосування: UpDown або Heart
hideAvatars Приховати аватари користувачів
hasDarkBackground Вказує на темний режим
customCSS Власні CSS-стилі
enableInfiniteScrolling Увімкнути нескінченну прокрутку (пагінацію)
readonly Вимкнути можливість коментування, але показувати коментарі
disableVoting Вимкнути функцію голосування
disableLiveCommenting Вимкнути оновлення в реальному часі
---

Повне налаштування теми Internal Link

Усі кнопки та елементи UI в 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.

Керування пам'яттю Internal Link

Запобігання витокам пам'яті

Щоб запобігти витокам пам'яті під час використання представлень 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, коли view фрагмента знищується
    if (feedView != null) {
        feedView.cleanup();
        feedView = null;
    }
}

@Override
public void onDestroy() {
    super.onDestroy();
    // Додаткове очищення при знищенні фрагмента
    if (feedSDK != null) {
        feedSDK.cleanup();
        feedSDK = null;
    }
}

Під час переключення фрагментів:

// Перед заміною або видаленням фрагмента, що містить представлення FastComments
Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.container);
if (currentFragment instanceof YourFragmentWithFeedView) {
    ((YourFragmentWithFeedView) currentFragment).cleanupFeedView();
}

// Потім продовжте транзакцію фрагмента
getSupportFragmentManager().beginTransaction()
    .replace(R.id.container, newFragment)
    .commit();

Важливо: Завжди викликайте методи cleanup() для запобігання витокам пам'яті, особливо коли:

  • Activity знищуються
  • Подання фрагментів знищуються
  • Перемикання між фрагментами
  • Перехід з екранів з компонентами FastComments

Потрібна допомога?

Якщо ви зіткнулися з будь-якими проблемами або маєте питання щодо Android-бібліотеки, будь ласка:

Участь у проєкті

Внески вітаються! Будь ласка, відвідайте репозиторій на GitHub для інструкцій щодо внесків.