FastComments.com

FastComments Android Library

Ово је званична Android библиотека за FastComments.

Коментарски видгети FastComments за Android

Репозиторијум

Погледајте на GitHub


Могућности Internal Link

  • 🔄 Коментарисање уживо са ажурирањима у реалном времену
  • 📱 Нативни Android UI компоненти
  • 🧵 Дискусије у нитама са одговорима
  • 👤 Безбедна SSO аутентификација
  • 👍 Систем гласања са прилагодљивим стиловима
  • 🔔 Корисничка обавештења и присуство
  • 🔍 Могућности модерације коментара
  • 📱 Интеграција друштвеног фида
  • ♾️ Пагинација са бесконачним скроловањем
  • 🎨 Свеобухватно прилагођавање тема

Захтеви Internal Link


  • Android SDK 26+ (Android 8.0 Oreo ili noviji)
  • 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)

// Пронађите View за коментаре у вашем изгледу
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();
    }
});

// Учитајте фид
feedView.load();

Интеграција уживо ћаскања Internal Link

Додајте интерфејс за ћаскање у реалном времену у вашу апликацију:

// Add LiveChatView to your layout 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)

// Optional: Add user authentication
val userData = SimpleSSOUserData(
    "User Name",
    "user@example.com",
    "https://path-to-avatar.jpg"
)
val sso = FastCommentsSSO(userData)
config.sso = sso.prepareToSend()

// Initialize the SDK
val sdk = FastCommentsSDK().configure(config)

// Set up the live chat view
val liveChatView = findViewById<LiveChatView>(R.id.liveChatView)
liveChatView.setSDK(sdk)
liveChatView.load()

// Don't forget lifecycle handling
override fun onResume() {
    super.onResume()
    sdk.refreshLiveEvents()
}

override fun onDestroy() {
    super.onDestroy()
    sdk.cleanup()
}

Примери пројеката Internal Link


Pogledajte ove demo implementacije:


Опције конфигурације 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

Сви дугмад и елементи корисничког интерфејса у 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();
}

// Then proceed with fragment transaction
getSupportFragmentManager().beginTransaction()
    .replace(R.id.container, newFragment)
    .commit();

Важно: Увек позивајте методе cleanup() да бисте спречили цурење меморије, посебно када:

  • Activities се уништавају
  • Fragment views се уништавају
  • Пребацивање између fragments
  • Напуштање екрана са FastComments компонентама

Потребна помоћ?

Ако наиђете на било какве проблеме или имате питања у вези са Android библиотеком, молимо вас:

Како допринети

Допринеси су добродошли! Молимо посетите репозиторијум на GitHub-у за смернице о доприносу.