FastComments.com

FastComments Android Library

Ceci est la bibliothèque Android officielle pour FastComments.

Widgets de commentaires FastComments pour Android

Dépôt

Voir sur GitHub


Fonctionnalités Internal Link

  • 🔄 Commentaires en direct avec mises à jour en temps réel
  • 📱 Composants UI Android natifs
  • 🧵 Discussions en fils avec réponses
  • 👤 Authentification SSO sécurisée
  • 👍 Système de vote avec styles personnalisables
  • 🔔 Notifications et présence des utilisateurs
  • 🔍 Fonctionnalités de modération des commentaires
  • 📱 Intégration de flux social
  • ♾️ Pagination par défilement infini
  • 🎨 Personnalisation complète des thèmes

Prérequis Internal Link


  • Android SDK 26+ (Android 8.0 Oreo ou ultérieur)
  • Java 8+

Installation Internal Link

Ajoutez le SDK FastComments au fichier build.gradle.kts de votre application :

dependencies {
    implementation("com.fastcomments:sdk:0.0.1")
}

Assurez-vous d'avoir le dépôt Repsy dans le fichier settings.gradle.kts de votre projet :

dependencyResolutionManagement {
    repositories {
        maven {
            url = uri("https://repo.repsy.io/mvn/winrid/fastcomments")
        }
        // other repositories...
    }
}

Utilisation de base Internal Link

1. Ajouter FastCommentsView à votre mise en page

<com.fastcomments.sdk.FastCommentsView
    android:id="@+id/commentsView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

2. Initialiser et configurer le SDK

// Configurer le SDK
val config = CommentWidgetConfig(
    "your-tenant-id", 
    "page-url-id", 
    "Page Title", 
    "yourdomain.com", 
    "Site Name"
)

// Options de configuration supplémentaires
config.voteStyle = VoteStyle.UpDown // or VoteStyle.Heart
config.enableInfiniteScrolling = true
config.hasDarkBackground = true // for dark mode support

// Initialiser le SDK
val sdk = FastCommentsSDK(config)

// Trouver la vue des commentaires dans votre mise en page
val commentsView = findViewById<FastCommentsView>(R.id.commentsView)

// Assigner l'instance SDK à la vue
commentsView.setSDK(sdk)

// Charger les commentaires
commentsView.load()

Authentification SSO sécurisée Internal Link

Implémentez une authentification sécurisée pour vos utilisateurs :

// Créez les données utilisateur (idéalement sur votre serveur)
val userData = SecureSSOUserData(
    "user-id",
    "user@example.com",
    "User Name",
    "https://path-to-avatar.jpg"
)

// Générez le jeton SSO (doit être fait côté serveur !)
val sso = FastCommentsSSO.createSecure("YOUR_API_KEY", userData)
val token = sso.prepareToSend()

// Ajoutez à la configuration
config.sso = token

Intégration du flux Internal Link

Afficher un fil de type réseau social avec commentaires :

// Configurer le SDK
CommentWidgetConfig config = new CommentWidgetConfig();
config.tenantId = "your-tenant-id";
config.urlId = "page-url-id";

// Initialiser le Feed SDK
FastCommentsFeedSDK feedSDK = new FastCommentsFeedSDK(config);

// Configurer la vue du fil
FastCommentsFeedView feedView = findViewById(R.id.feedView);
feedView.setSDK(feedSDK);

// Définir l'écouteur d'interaction
feedView.setFeedViewInteractionListener(new FastCommentsFeedView.OnFeedViewInteractionListener() {
    @Override
    public void onFeedLoaded(List<FeedPost> posts) {
        // Fil chargé avec succès
    }

    @Override
    public void onFeedError(String errorMessage) {
        // Gérer les erreurs
    }

    @Override
    public void onPostSelected(FeedPost post) {
        // L'utilisateur a sélectionné une publication
    }

    @Override
    public void onCommentsRequested(FeedPost post) {
        // Afficher les commentaires pour la publication
        CommentsDialog dialog = new CommentsDialog(context, post, feedSDK);
        dialog.show();
    }
});

// Charger le fil
feedView.load();

Intégration du chat en direct Internal Link

Ajoutez une interface de chat en temps réel à votre application :

// Ajoutez LiveChatView à votre layout XML
// <com.fastcomments.sdk.LiveChatView
//     android:id="@+id/liveChatView"
//     android:layout_width="match_parent"
//     android:layout_height="match_parent" />

// Créez une configuration pour le SDK
val config = CommentWidgetConfig().apply {
    tenantId = "your-tenant-id"
    urlId = "chat-room-identifier" 
    pageTitle = "Chat Room Name"
}
LiveChatView.setupLiveChatConfig(config)

// Optionnel : Ajoutez l'authentification utilisateur
val userData = SimpleSSOUserData(
    "User Name",
    "user@example.com",
    "https://path-to-avatar.jpg"
)
val sso = FastCommentsSSO(userData)
config.sso = sso.prepareToSend()

// Initialisez le SDK
val sdk = FastCommentsSDK().configure(config)

// Configurez la vue de chat en direct
val liveChatView = findViewById<LiveChatView>(R.id.liveChatView)
liveChatView.setSDK(sdk)
liveChatView.load()

// N'oubliez pas la gestion du cycle de vie
override fun onResume() {
    super.onResume()
    sdk.refreshLiveEvents()
}

override fun onDestroy() {
    super.onDestroy()
    sdk.cleanup()
}

Exemples de projets Internal Link


Découvrez ces implémentations de démonstration :


Options de configuration Internal Link

Le SDK fournit de nombreuses options de configuration via la classe CommentWidgetConfig:

Option Description
tenantId ID de votre compte FastComments
urlId ID représentant la page actuelle
sso Jeton SSO pour l'authentification
allowAnon Autoriser les commentaires anonymes
voteStyle Style de vote UpDown ou Heart
hideAvatars Masquer les avatars des utilisateurs
hasDarkBackground Indique le mode sombre
customCSS Styles CSS personnalisés
enableInfiniteScrolling Activer la pagination par défilement infini
readonly Désactiver la possibilité de commenter tout en affichant les commentaires
disableVoting Désactiver la fonctionnalité de vote
disableLiveCommenting Désactiver les mises à jour en temps réel

Personnalisation complète du thème Internal Link

Tous les boutons et éléments d'interface du SDK FastComments sont personnalisables par thème. Utilisez FastCommentsTheme.Builder pour un contrôle complet du branding de votre application.

Thématisation programmatique (recommandé)

val theme = FastCommentsTheme.Builder()
    // Boutons d'action : Boutons Envoyer, vote, menu, aimer/partager
    .setActionButtonColor(Color.parseColor("#FF1976D2"))

    // Boutons de réponse : Boutons de réponse aux commentaires  
    .setReplyButtonColor(Color.parseColor("#FF4CAF50"))

    // Boutons bascule : Boutons afficher/masquer les réponses
    .setToggleRepliesButtonColor(Color.parseColor("#FFFF5722"))

    // Boutons charger plus : Boutons de pagination
    .setLoadMoreButtonTextColor(Color.parseColor("#FF9C27B0"))

    .setPrimaryColor(Color.parseColor("#FF6200EE"))
    .setLinkColor(Color.parseColor("#FF1976D2"))
    .setDialogHeaderBackgroundColor(Color.parseColor("#FF333333"))
    .build()

// Appliquer le thème
sdk.setTheme(theme)

Remplacement rapide des couleurs

Override color resources in your colors.xml for simple branding:

<!-- Dans le res/values/colors.xml de votre application -->
<resources>
    <!-- Modifiez tous les éléments d'interface principaux -->
    <color name="primary">#FF1976D2</color>

    <!-- Ou personnalisez des types de boutons spécifiques -->
    <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>

Couverture des boutons thématisés

Chaque bouton du SDK prend en charge la thématisation :

  • Boutons d'envoi, boutons de vote, boutons de menu, boutons de réponse
  • Boutons afficher/masquer les réponses, boutons charger plus
  • Boutons d'action du fil (aimer, commenter, partager)
  • Boutons de dialogue (envoyer, annuler, enregistrer)
  • Boutons de tâche dynamiques dans les publications du fil

Pour une documentation détaillée sur la thématisation, consultez THEMING.md.

Gestion de la mémoire Internal Link

Prévention des fuites de mémoire

Pour éviter les fuites de mémoire lors de l'utilisation des vues FastComments dans Activities ou Fragments, appelez toujours cleanup() lorsque la vue n'est plus nécessaire :

Dans les Activities :

@Override
protected void onDestroy() {
    super.onDestroy();
    // Nettoyer les vues FastComments pour éviter les fuites de mémoire
    if (feedView != null) {
        feedView.cleanup();
    }
    if (commentsView != null) {
        commentsView.cleanup();
    }
}

Dans les Fragments :

@Override
public void onDestroyView() {
    super.onDestroyView();
    // Nettoyer les vues FastComments lorsque la vue du fragment est détruite
    if (feedView != null) {
        feedView.cleanup();
        feedView = null;
    }
}

@Override
public void onDestroy() {
    super.onDestroy();
    // Nettoyage supplémentaire lorsque le fragment est détruit
    if (feedSDK != null) {
        feedSDK.cleanup();
        feedSDK = null;
    }
}

Lors du changement de Fragments :

// Avant de remplacer ou de supprimer un fragment contenant des vues FastComments
Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.container);
if (currentFragment instanceof YourFragmentWithFeedView) {
    ((YourFragmentWithFeedView) currentFragment).cleanupFeedView();
}

// Procéder ensuite à la transaction de fragment
getSupportFragmentManager().beginTransaction()
    .replace(R.id.container, newFragment)
    .commit();

Important : Appelez toujours les méthodes cleanup() pour éviter les fuites de mémoire, en particulier lorsque :

  • Activities sont détruites
  • Les vues des fragments sont détruites
  • Changement entre fragments
  • Navigation hors des écrans contenant des composants FastComments

Besoin d'aide ?

Si vous rencontrez des problèmes ou avez des questions concernant la bibliothèque Android, veuillez :

Contribuer

Les contributions sont les bienvenues ! Veuillez consulter le dépôt GitHub pour les directives de contribution.