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")
        }
        // други репозиторијуми...
    }
}

Основно коришћење 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)

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

// Подесите 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 pruža mnogo opcija konfiguracije putem klase CommentWidgetConfig:

Option Description
tenantId ID vašeg FastComments naloga
urlId ID koji predstavlja trenutnu stranicu
sso SSO token za autentifikaciju
allowAnon Dozvoli anonimno komentarisanje
voteStyle Stil glasanja: UpDown ili Heart
hideAvatars Sakrij korisničke avatare
hasDarkBackground Označava tamni režim
customCSS Prilagođeni CSS stilovi
enableInfiniteScrolling Omogući beskonačno skrolovanje
readonly Onemogući komentarisanje, ali prikaži komentare
disableVoting Onemogući glasanje
disableLiveCommenting Onemogući ažuriranja u realnom vremenu

Свеобухватно прилагођавање теме Internal Link

Сва дугмад и елементи корисничког интерфејса у FastComments SDK-у су прилагодљиви темом. Користите FastCommentsTheme.Builder за потпуну контролу брендирања ваше апликације.

Програмско прилагођавање теме (Препоручено)

val theme = FastCommentsTheme.Builder()
    // Акционa дугмад: Пошаљи, гласај, мени, лајк/пошаљи дугмад
    .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>
    <!-- Промените све примарне елементе корисничког интерфејса -->
    <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 погледа у Activity-има или Fragment-има, увек позовите cleanup() када поглед више није потребан:

У Activity-има:

@Override
protected void onDestroy() {
    super.onDestroy();
    // Очистите FastComments погледе да бисте спречили цурење меморије
    if (feedView != null) {
        feedView.cleanup();
    }
    if (commentsView != null) {
        commentsView.cleanup();
    }
}

У Fragment-има:

@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;
    }
}

При мењању фрагмената:

// Пре замене или уклањања фрагмента који садржи 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 Library, молимо вас:

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

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