FastComments.com

FastComments Android Library


To jest oficjalna biblioteka FastComments dla Androida.

Widżety komentarzy FastComments dla Androida

Repozytorium

Zobacz na GitHub


Funkcje Internal Link

  • 🔄 Komentowanie na żywo z aktualizacjami w czasie rzeczywistym
  • 📱 Natywne komponenty UI dla Androida
  • 🧵 Dyskusje w wątkach z odpowiedziami
  • 👤 Bezpieczne uwierzytelnianie SSO
  • 👍 System głosowania z konfigurowalnymi stylami
  • 🔔 Powiadomienia użytkowników i status obecności
  • 🔍 Możliwości moderacji komentarzy
  • 📱 Integracja z feedem społecznościowym
  • ♾️ Paginacja z nieskończonym przewijaniem
  • 🎨 Szerokie możliwości dostosowywania motywów

Wymagania Internal Link


  • Android SDK 26+ (Android 8.0 Oreo lub nowszy)
  • Java 8+

Instalacja Internal Link

Dodaj SDK FastComments do pliku build.gradle.kts swojej aplikacji:

dependencies {
    implementation("com.fastcomments:sdk:0.0.1")
}

Upewnij się, że masz repozytorium Repsy w pliku settings.gradle.kts swojego projektu:

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

Podstawowe użycie Internal Link

1. Dodaj FastCommentsView do swojego układu

<com.fastcomments.sdk.FastCommentsView
    android:id="@+id/commentsView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

2. Zainicjalizuj i skonfiguruj SDK

// Skonfiguruj SDK
val config = CommentWidgetConfig(
    "your-tenant-id", 
    "page-url-id", 
    "Page Title", 
    "yourdomain.com", 
    "Site Name"
)

// Dodatkowe opcje konfiguracji
config.voteStyle = VoteStyle.UpDown // lub VoteStyle.Heart
config.enableInfiniteScrolling = true
config.hasDarkBackground = true // dla obsługi trybu ciemnego

// Zainicjalizuj SDK
val sdk = FastCommentsSDK(config)

// Znajdź widok komentarzy w układzie
val commentsView = findViewById<FastCommentsView>(R.id.commentsView)

// Ustaw instancję SDK dla widoku
commentsView.setSDK(sdk)

// Załaduj komentarze
commentsView.load()

Bezpieczne uwierzytelnianie SSO Internal Link

Zaimplementuj bezpieczne uwierzytelnianie dla swoich użytkowników:

// Utwórz dane użytkownika (najlepiej na Twoim serwerze)
val userData = SecureSSOUserData(
    "user-id",
    "user@example.com",
    "User Name",
    "https://path-to-avatar.jpg"
)

// Wygeneruj token SSO (powinno być wykonane po stronie serwera!)
val sso = FastCommentsSSO.createSecure("YOUR_API_KEY", userData)
val token = sso.prepareToSend()

// Dodaj do konfiguracji
config.sso = token

Integracja kanału Internal Link

Wyświetl kanał w stylu mediów społecznościowych z komentarzami:

// Skonfiguruj SDK
CommentWidgetConfig config = new CommentWidgetConfig();
config.tenantId = "your-tenant-id";
config.urlId = "page-url-id";

// Zainicjalizuj Feed SDK
FastCommentsFeedSDK feedSDK = new FastCommentsFeedSDK(config);

// Skonfiguruj widok kanału
FastCommentsFeedView feedView = findViewById(R.id.feedView);
feedView.setSDK(feedSDK);

// Ustaw nasłuchiwacz interakcji
feedView.setFeedViewInteractionListener(new FastCommentsFeedView.OnFeedViewInteractionListener() {
    @Override
    public void onFeedLoaded(List<FeedPost> posts) {
        // Kanał załadowany pomyślnie
    }

    @Override
    public void onFeedError(String errorMessage) {
        // Obsłuż błędy
    }

    @Override
    public void onPostSelected(FeedPost post) {
        // Użytkownik wybrał wpis
    }

    @Override
    public void onCommentsRequested(FeedPost post) {
        // Pokaż komentarze dla wpisu
        CommentsDialog dialog = new CommentsDialog(context, post, feedSDK);
        dialog.show();
    }
});

// Załaduj kanał
feedView.load();

Integracja czatu na żywo Internal Link

Dodaj interfejs czatu w czasie rzeczywistym do swojej aplikacji:

// Dodaj LiveChatView do układu XML
// <com.fastcomments.sdk.LiveChatView
//     android:id="@+id/liveChatView"
//     android:layout_width="match_parent"
//     android:layout_height="match_parent" />

// Utwórz konfigurację dla SDK
val config = CommentWidgetConfig().apply {
    tenantId = "your-tenant-id"
    urlId = "chat-room-identifier" 
    pageTitle = "Chat Room Name"
}
LiveChatView.setupLiveChatConfig(config)

// Opcjonalnie: Dodaj uwierzytelnianie użytkownika
val userData = SimpleSSOUserData(
    "User Name",
    "user@example.com",
    "https://path-to-avatar.jpg"
)
val sso = FastCommentsSSO(userData)
config.sso = sso.prepareToSend()

// Zainicjalizuj SDK
val sdk = FastCommentsSDK().configure(config)

// Skonfiguruj widok czatu na żywo
val liveChatView = findViewById<LiveChatView>(R.id.liveChatView)
liveChatView.setSDK(sdk)
liveChatView.load()

// Nie zapomnij obsługi cyklu życia
override fun onResume() {
    super.onResume()
    sdk.refreshLiveEvents()
}

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

Przykładowe projekty Internal Link


Zapoznaj się z tymi przykładowymi implementacjami:


Opcje konfiguracji Internal Link

SDK udostępnia wiele opcji konfiguracyjnych za pomocą klasy CommentWidgetConfig:

Opcja Opis
tenantId Twoje ID konta FastComments
urlId ID reprezentujące bieżącą stronę
sso Token SSO do uwierzytelniania
allowAnon Zezwalaj na anonimowe komentowanie
voteStyle Styl głosowania: UpDown lub Heart
hideAvatars Ukryj awatary użytkowników
hasDarkBackground Wskazuje tryb ciemny
customCSS Własne style CSS
enableInfiniteScrolling Włącz przewijanie nieskończone
readonly Wyłącz komentowanie, ale wyświetlaj komentarze
disableVoting Wyłącz funkcję głosowania
disableLiveCommenting Wyłącz aktualizacje w czasie rzeczywistym

Kompleksowa personalizacja motywu Internal Link

Wszystkie przyciski i elementy interfejsu użytkownika w SDK FastComments obsługują motywy. Użyj FastCommentsTheme.Builder, aby w pełni kontrolować branding swojej aplikacji.

Programowe motywy (zalecane)

val theme = FastCommentsTheme.Builder()
    // Przyciski akcji: wyślij, głosuj, menu, przyciski polubienia/udostępnienia
    .setActionButtonColor(Color.parseColor("#FF1976D2"))

    // Przyciski odpowiedzi: przyciski odpowiedzi w komentarzach  
    .setReplyButtonColor(Color.parseColor("#FF4CAF50"))

    // Przełącznik: przyciski pokaż/ukryj odpowiedzi
    .setToggleRepliesButtonColor(Color.parseColor("#FFFF5722"))

    // Przyciski 'pokaż więcej': przyciski paginacji
    .setLoadMoreButtonTextColor(Color.parseColor("#FF9C27B0"))

    .setPrimaryColor(Color.parseColor("#FF6200EE"))
    .setLinkColor(Color.parseColor("#FF1976D2"))
    .setDialogHeaderBackgroundColor(Color.parseColor("#FF333333"))
    .build()

// Zastosuj motyw
sdk.setTheme(theme)

Szybkie nadpisanie kolorów

Nadpisz zasoby kolorów w colors.xml, aby w prosty sposób dostosować branding:

<!-- W pliku res/values/colors.xml Twojej aplikacji -->
<resources>
    <!-- Zmień wszystkie podstawowe elementy interfejsu użytkownika -->
    <color name="primary">#FF1976D2</color>

    <!-- Lub dostosuj konkretne typy przycisków -->
    <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>

Zakres przycisków objętych motywem

Każdy przycisk w SDK obsługuje motywy:

  • Przyciski wysyłania, przyciski głosowania, przyciski menu, przyciski odpowiedzi
  • Przyciski pokaż/ukryj odpowiedzi, przyciski 'pokaż więcej'
  • Przyciski akcji w kanale (polub, skomentuj, udostępnij)
  • Przyciski w dialogach (wyślij, anuluj, zapisz)
  • Dynamiczne przyciski zadań w postach kanału

Szczegółową dokumentację dotyczącą motywów znajdziesz w THEMING.md.

Zarządzanie pamięcią Internal Link

Zapobieganie wyciekom pamięci

Aby zapobiec wyciekom pamięci podczas korzystania z widoków FastComments w Activities lub Fragments, zawsze wywołuj cleanup() gdy widok nie jest już potrzebny:

W Activities:

@Override
protected void onDestroy() {
    super.onDestroy();
    // Oczyść widoki FastComments, aby zapobiec wyciekom pamięci
    if (feedView != null) {
        feedView.cleanup();
    }
    if (commentsView != null) {
        commentsView.cleanup();
    }
}

W Fragments:

@Override
public void onDestroyView() {
    super.onDestroyView();
    // Oczyść widoki FastComments, gdy widok fragmentu zostanie zniszczony
    if (feedView != null) {
        feedView.cleanup();
        feedView = null;
    }
}

@Override
public void onDestroy() {
    super.onDestroy();
    // Dodatkowe czyszczenie przy niszczeniu fragmentu
    if (feedSDK != null) {
        feedSDK.cleanup();
        feedSDK = null;
    }
}

Podczas przełączania Fragments:

// Przed zastąpieniem lub usunięciem fragmentu zawierającego widoki FastComments
Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.container);
if (currentFragment instanceof YourFragmentWithFeedView) {
    ((YourFragmentWithFeedView) currentFragment).cleanupFeedView();
}

// Następnie kontynuuj transakcję fragmentu
getSupportFragmentManager().beginTransaction()
    .replace(R.id.container, newFragment)
    .commit();

Ważne: Zawsze wywołuj metody cleanup() aby zapobiec wyciekom pamięci, szczególnie gdy:

  • Activities są niszczone
  • Fragment views są niszczone
  • Przełączanie między fragments
  • Nawigowanie z ekranów zawierających komponenty FastComments

Potrzebujesz pomocy?

Jeśli napotkasz jakiekolwiek problemy lub masz pytania dotyczące biblioteki Android, prosimy:

Wkład

Wkłady są mile widziane! Prosimy odwiedzić repozytorium GitHub po wytyczne dotyczące kontrybucji.