FastComments.com

FastComments Android Library

Questa è la libreria Android ufficiale per FastComments.

Widget di commento di FastComments per Android

Repository

Visualizza su GitHub


Caratteristiche Internal Link


  • 🔄 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

Requisiti Internal Link


  • Android SDK 26+ (Android 8.0 Oreo o versioni successive)
  • Java 8+

Installazione Internal Link

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 Internal Link

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 Internal Link

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 Internal Link

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 Internal Link

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 Internal Link


Dai un'occhiata a queste implementazioni demo:


Opzioni di configurazione Internal Link

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 Internal Link

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 Internal Link

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.