FastComments.com

FastComments Android Library


Това е официалната Android библиотека за FastComments.

Уиджети за коментари на FastComments за Android

Хранилище

Вижте в GitHub


Функции Internal Link

  • 🔄 Живо коментиране с актуализации в реално време
  • 📱 Нативни Android UI компоненти
  • 🧵 Вложени дискусии с отговори
  • 👤 Сигурно 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")
        }
        // other repositories...
    }
}

Основна употреба Internal Link

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 автентикация Internal Link

Реализирайте сигурно удостоверяване за вашите потребители:

// Създайте данни за потребителя (по възможност на вашия сървър)
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

Интеграция на емисия 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();
    }
});

// Заредете емисията
feedView.load();

Интеграция на чат на живо Internal Link

Добавете интерфейс за чат в реално време към вашето приложение:

// Добавете 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()
}

Примерни проекти Internal Link


Разгледайте тези демонстрационни реализации:


Опции за конфигурация Internal Link


SDK предоставя много опции за конфигурация чрез класа CommentWidgetConfig:

Option Description
tenantId ID на вашия FastComments акаунт
urlId ID, представляващ текущата страница
sso SSO токен за удостоверяване
allowAnon Позволява анонимно коментиране
voteStyle Стил на гласуване UpDown или Heart
hideAvatars Скрива потребителските аватари
hasDarkBackground Показва тъмен режим
customCSS Персонализирани CSS стилове
enableInfiniteScrolling Разрешава безкрайно превъртане за странициране
readonly Деактивира коментирането, но показва коментарите
disableVoting Деактивира функционалността за гласуване
disableLiveCommenting Деактивира актуализации в реално време
---

Пълна персонализация на темата Internal Link

Всички бутони и елементи от потребителския интерфейс в 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 изгледите когато изгледът на фрагмента бъде унищожен
    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 хранилището за указания за принос.