
Langue 🇫🇷 Français (France)
Documentation
Prise en main
Utilisation
Authentification
Configuration
FastComments Android Library
Ceci est la bibliothèque Android officielle pour FastComments.
Widgets de commentaires FastComments pour Android
Dépôt
Fonctionnalités 
- 🔄 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
Installation 
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 
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 
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 
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 
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 
Découvrez ces implémentations de démonstration :
- Exemple basique de commentaires
- Implémentation SSO sécurisée
- Exemple d'intégration de flux
- Exemple de chat en direct
- Exemple de dialogue de commentaires
Options de configuration 
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 
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 
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.