
Język 🇵🇱 Polski
Dokumentacja
Rozpoczęcie
Użycie
Uwierzytelnianie
Konfiguracja
Dodaj komentarze do swojej aplikacji Android
To jest oficjalna biblioteka FastComments dla Androida.
Widżety komentarzy FastComments dla Androida
Repozytorium
Agenci kodowania AI 
Daj swojemu agentowi programistycznemu kontekst FastComments, którego potrzebuje – widgety, konfigurację, Secure SSO, REST API i SDK:
npx skills add fastcomments/skills
Działa z Claude Code, Codex, Cursor, Copilot, Gemini oraz każdym innym agentem obsługiwanym przez skills CLI.
Funkcje 
- 🔄 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
Instalacja 
Dodaj SDK FastComments do pliku build.gradle.kts swojej aplikacji:
dependencies {
implementation("com.fastcomments:sdk:2.0.0")
}
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")
}
// other repositories...
}
}
Podstawowe użycie 
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()
Bezpieczna autoryzacja SSO 
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 
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 
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 
Zapoznaj się z tymi przykładowymi implementacjami:
- Podstawowy przykład komentarzy
- Bezpieczna implementacja SSO
- Przykład integracji feedu
- Przykład czatu na żywo
- Przykład dialogu komentarzy
Opcje konfiguracji 
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 
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ą 
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.