FastComments.com

Додајте коментаре у вашу Android апликацију

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

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

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

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


AI агенти за кодирање Internal Link

skills.sh

Дајте вашем агенту за кодирање FastComments контекст који му је потребан – виџети, конфигурација, Secure SSO, REST API и SDK‑ови:

npx skills add fastcomments/skills

Ради са Claude Code, Codex, Cursor, Copilot, Gemini и свим осталим агентима које подржава skills CLI.

Функције 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:2.0.0")
}

Уверите се да имате Repsy репозиторијум у вашој пројектној датотеци settings.gradle.kts:

dependencyResolutionManagement {
    repositories {
        maven {
            url = uri("https://repo.repsy.io/mvn/winrid/fastcomments")
        }
        // other repositories...
    }
}

Основна употреба 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


Погледајте ове демо имплементације:


Опције конфигурације Internal Link


SDK пружа многе опције конфигурације преко класе CommentWidgetConfig:

ОпцијаОпис
tenantIdID вашег FastComments налога
urlIdID који представља тренутну страницу
ssoSSO токен за аутентификацију
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-у за смернице о доприносу.