FastComments.com

Dodaj komentarze do swojej aplikacji na Androida


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:

OpcjaOpis
tenantIdTwoje ID konta FastComments
urlIdID reprezentujące bieżącą stronę
ssoToken SSO do uwierzytelniania
allowAnonZezwalaj na anonimowe komentowanie
voteStyleStyl głosowania: UpDown lub Heart
hideAvatarsUkryj awatary użytkowników
hasDarkBackgroundWskazuje tryb ciemny
customCSSWłasne style CSS
enableInfiniteScrollingWłącz przewijanie nieskończone
readonlyWyłącz komentowanie, ale wyświetlaj komentarze
disableVotingWyłącz funkcję głosowania
disableLiveCommentingWyłą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.