FastComments.com

FastComments Android Library

Il s'agit de la bibliothèque officielle Android 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 d'interface utilisateur natifs pour Android
  • 🧵 Discussions organisées 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 du fil social
  • ♾️ Pagination à 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 // ou VoteStyle.Heart
config.enableInfiniteScrolling = true
config.hasDarkBackground = true // pour la prise en charge du mode sombre

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

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

// Associer l'instance du 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 de flux Internal Link

Afficher un fil de style réseau social avec des 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 le gestionnaire d'interactions
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 clavardage en direct Internal Link

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

// Ajoutez LiveChatView à votre XML de mise en page
// <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()
}

Projets d'exemple Internal Link


Consultez 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 L'ID de votre compte FastComments
urlId ID représentant la page courante
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 mais afficher 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 de l'interface utilisateur du SDK FastComments sont personnalisables par thème. Utilisez le FastCommentsTheme.Builder pour un contrôle complet de l'image de marque de votre application.

Thématisation par programmation (recommandé)

val theme = FastCommentsTheme.Builder()
    // Boutons d'action : Envoyer, voter, menu, boutons J'aime/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

Remplacez les ressources de couleur dans votre colors.xml pour une personnalisation simple de la marque :

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

    <!-- Ou personnaliser 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>

Portée des boutons thématisés

Tous les boutons du SDK prennent 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 flux (j'aime, commentaire, partage)
  • Boutons de dialogue (soumettre, annuler, enregistrer)
  • Boutons de tâche dynamiques dans les publications du flux

Pour la 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 prévenir 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 :

In Activities:

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

In 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;
    }
}

When Switching 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();
}

// Ensuite, procédez à la transaction de fragment
getSupportFragmentManager().beginTransaction()
    .replace(R.id.container, newFragment)
    .commit();

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

  • Les Activities sont détruites
  • Les vues des Fragments sont détruites
  • Lors du changement de Fragments
  • Lorsqu'on navigue 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 consignes de contribution.