
Język 🇵🇱 Polski
Dokumentacja
Rozpoczęcie pracy
Użycie
Uwierzytelnianie
Konfiguracja
FastComments Android Library
To jest oficjalna biblioteka FastComments dla Androida.
Widżety komentarzy FastComments dla Androida
Repozytorium
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: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 
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 
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.