
Lingua 🇮🇹 Italiano
Documentazione
Primi passi
Utilizzo
Autenticazione
Configurazione
FastComments Android Library
Questa è la libreria Android ufficiale per FastComments.
Widget di commento di FastComments per Android
Repository
Caratteristiche 
- 🔄 Commenti in tempo reale con aggiornamenti in diretta
- 📱 Componenti UI Android nativi
- 🧵 Discussioni a thread con risposte
- 👤 Autenticazione SSO sicura
- 👍 Sistema di votazione con stili personalizzabili
- 🔔 Notifiche e presenza degli utenti
- 🔍 Funzionalità di moderazione dei commenti
- 📱 Integrazione con feed social
- ♾️ Paginazione con scorrimento infinito
- 🎨 Personalizzazione completa del tema
Installazione 
Aggiungi l'SDK di FastComments al file build.gradle.kts della tua app:
dependencies {
implementation("com.fastcomments:sdk:0.0.1")
}
Assicurati di avere il repository Repsy nel settings.gradle.kts del tuo progetto:
dependencyResolutionManagement {
repositories {
maven {
url = uri("https://repo.repsy.io/mvn/winrid/fastcomments")
}
// altri repository...
}
}
Utilizzo base 
1. Aggiungi FastCommentsView al tuo layout
<com.fastcomments.sdk.FastCommentsView
android:id="@+id/commentsView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
2. Inizializza e configura l'SDK
// Configura l'SDK
val config = CommentWidgetConfig(
"your-tenant-id",
"page-url-id",
"Page Title",
"yourdomain.com",
"Site Name"
)
// Opzioni di configurazione aggiuntive
config.voteStyle = VoteStyle.UpDown // oppure VoteStyle.Heart
config.enableInfiniteScrolling = true
config.hasDarkBackground = true // per il supporto della modalità scura
// Inizializza l'SDK
val sdk = FastCommentsSDK(config)
// Trova FastCommentsView nel tuo layout
val commentsView = findViewById<FastCommentsView>(R.id.commentsView)
// Imposta l'istanza SDK per la view
commentsView.setSDK(sdk)
// Carica i commenti
commentsView.load()
Autenticazione SSO sicura 
Implementa un'autenticazione sicura per i tuoi utenti:
// Crea i dati utente (idealmente sul tuo server)
val userData = SecureSSOUserData(
"user-id",
"user@example.com",
"User Name",
"https://path-to-avatar.jpg"
)
// Genera il token SSO (dovrebbe essere fatto lato server!)
val sso = FastCommentsSSO.createSecure("YOUR_API_KEY", userData)
val token = sso.prepareToSend()
// Aggiungi a config
config.sso = token
Integrazione del feed 
Visualizza un feed in stile social media con commenti:
// Configura lo SDK
CommentWidgetConfig config = new CommentWidgetConfig();
config.tenantId = "your-tenant-id";
config.urlId = "page-url-id";
// Inizializza il Feed SDK
FastCommentsFeedSDK feedSDK = new FastCommentsFeedSDK(config);
// Configura la vista del feed
FastCommentsFeedView feedView = findViewById(R.id.feedView);
feedView.setSDK(feedSDK);
// Imposta il listener di interazione
feedView.setFeedViewInteractionListener(new FastCommentsFeedView.OnFeedViewInteractionListener() {
@Override
public void onFeedLoaded(List<FeedPost> posts) {
// Feed caricato correttamente
}
@Override
public void onFeedError(String errorMessage) {
// Gestisci gli errori
}
@Override
public void onPostSelected(FeedPost post) {
// L'utente ha selezionato un post
}
@Override
public void onCommentsRequested(FeedPost post) {
// Mostra i commenti per il post
CommentsDialog dialog = new CommentsDialog(context, post, feedSDK);
dialog.show();
}
});
// Carica il feed
feedView.load();
Integrazione chat dal vivo 
Aggiungi un'interfaccia di chat in tempo reale alla tua app:
// Aggiungi LiveChatView al tuo layout XML
// <com.fastcomments.sdk.LiveChatView
// android:id="@+id/liveChatView"
// android:layout_width="match_parent"
// android:layout_height="match_parent" />
// Crea una configurazione per l'SDK
val config = CommentWidgetConfig().apply {
tenantId = "your-tenant-id"
urlId = "chat-room-identifier"
pageTitle = "Chat Room Name"
}
LiveChatView.setupLiveChatConfig(config)
// Opzionale: Aggiungi l'autenticazione utente
val userData = SimpleSSOUserData(
"User Name",
"user@example.com",
"https://path-to-avatar.jpg"
)
val sso = FastCommentsSSO(userData)
config.sso = sso.prepareToSend()
// Inizializza l'SDK
val sdk = FastCommentsSDK().configure(config)
// Configura la LiveChatView
val liveChatView = findViewById<LiveChatView>(R.id.liveChatView)
liveChatView.setSDK(sdk)
liveChatView.load()
// Non dimenticare la gestione del ciclo di vita
override fun onResume() {
super.onResume()
sdk.refreshLiveEvents()
}
override fun onDestroy() {
super.onDestroy()
sdk.cleanup()
}
Progetti di esempio 
Dai un'occhiata a queste implementazioni demo:
- Esempio base di commenti
- Implementazione SSO sicura
- Esempio di integrazione del feed
- Esempio di chat in tempo reale
- Esempio di dialogo dei commenti
Opzioni di configurazione 
L'SDK fornisce molte opzioni di configurazione tramite la classe CommentWidgetConfig:
| Option | Description |
|---|---|
tenantId |
ID del tuo account FastComments |
urlId |
ID che rappresenta la pagina corrente |
sso |
Token SSO per l'autenticazione |
allowAnon |
Consenti commenti anonimi |
voteStyle |
Stile di voto UpDown o Heart |
hideAvatars |
Nascondi gli avatar degli utenti |
hasDarkBackground |
Indica la modalità scura |
customCSS |
Stili CSS personalizzati |
enableInfiniteScrolling |
Abilita la paginazione a scorrimento infinito |
readonly |
Disabilita la possibilità di commentare ma mostra i commenti |
disableVoting |
Disabilita la funzionalità di voto |
disableLiveCommenting |
Disabilita gli aggiornamenti in tempo reale |
Personalizzazione completa del tema 
Tutti i pulsanti e gli elementi UI nell'SDK FastComments sono personalizzabili con temi. Usa FastCommentsTheme.Builder per avere il controllo completo sul branding della tua app.
Theming programmabile (Consigliato)
val theme = FastCommentsTheme.Builder()
// Pulsanti di azione: Invia, vota, menu, pulsanti mi piace/condividi
.setActionButtonColor(Color.parseColor("#FF1976D2"))
// Pulsanti di risposta: pulsanti per rispondere ai commenti
.setReplyButtonColor(Color.parseColor("#FF4CAF50"))
// Pulsanti toggle: mostra/nascondi risposte
.setToggleRepliesButtonColor(Color.parseColor("#FFFF5722"))
// Pulsanti Carica altri: pulsanti di paginazione
.setLoadMoreButtonTextColor(Color.parseColor("#FF9C27B0"))
.setPrimaryColor(Color.parseColor("#FF6200EE"))
.setLinkColor(Color.parseColor("#FF1976D2"))
.setDialogHeaderBackgroundColor(Color.parseColor("#FF333333"))
.build()
// Applica il tema
sdk.setTheme(theme)
Sovrascrittura rapida dei colori
Sovrascrivi le risorse di colore nel tuo colors.xml per un branding semplice:
<!-- Nel file res/values/colors.xml della tua app -->
<resources>
<!-- Cambia tutti gli elementi UI primari -->
<color name="primary">#FF1976D2</color>
<!-- Oppure personalizza tipi di pulsanti specifici -->
<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>
Copertura dei pulsanti tematizzati
Tutti i pulsanti nello SDK supportano i temi:
- Pulsanti di invio, pulsanti di voto, pulsanti del menu, pulsanti di risposta
- Pulsanti mostra/nascondi risposte, pulsanti carica altri
- Pulsanti di azione del feed (mi piace, commenta, condividi)
- Pulsanti del dialogo (invia, annulla, salva)
- Pulsanti di attività dinamiche nei post del feed
Per la documentazione dettagliata sul theming, consulta THEMING.md.
Gestione della memoria 
Prevenzione delle perdite di memoria
Per prevenire perdite di memoria quando si usano le view di FastComments nelle Activity o nei Fragment, chiamare sempre cleanup() quando la view non è più necessaria:
Nelle Activity:
@Override
protected void onDestroy() {
super.onDestroy();
// Pulire le view di FastComments per prevenire perdite di memoria
if (feedView != null) {
feedView.cleanup();
}
if (commentsView != null) {
commentsView.cleanup();
}
}
Nei Fragment:
@Override
public void onDestroyView() {
super.onDestroyView();
// Pulire le view di FastComments quando la view del Fragment viene distrutta
if (feedView != null) {
feedView.cleanup();
feedView = null;
}
}
@Override
public void onDestroy() {
super.onDestroy();
// Pulizie aggiuntive quando il Fragment viene distrutto
if (feedSDK != null) {
feedSDK.cleanup();
feedSDK = null;
}
}
Quando si sostituiscono i Fragment:
// Prima di sostituire o rimuovere un Fragment che contiene le view di FastComments
Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.container);
if (currentFragment instanceof YourFragmentWithFeedView) {
((YourFragmentWithFeedView) currentFragment).cleanupFeedView();
}
// Quindi procedere con la transazione del Fragment
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, newFragment)
.commit();
Importante: Chiamare sempre i metodi cleanup() per prevenire perdite di memoria, specialmente quando:
- Le Activity vengono distrutte
- Le view dei Fragment vengono distrutte
- Durante la sostituzione tra Fragment
- Quando si naviga lontano da schermate con componenti FastComments
Hai bisogno di aiuto?
Se riscontri problemi o hai domande sulla libreria Android, per favore:
Contribuire
I contributi sono benvenuti! Visita il repository GitHub per le linee guida sui contributi.