FastComments.com

FastComments Android Library

Dies ist die offizielle Android-Bibliothek für FastComments.

FastComments-Kommentar-Widgets für Android

Repository

Auf GitHub ansehen


Funktionen Internal Link

  • 🔄 Live-Kommentare mit Echtzeit-Updates
  • 📱 Native Android UI-Komponenten
  • 🧵 Thread-basierte Diskussionen mit Antworten
  • 👤 Sichere SSO-Authentifizierung
  • 👍 Abstimmungssystem mit anpassbaren Stilen
  • 🔔 Benutzerbenachrichtigungen und Präsenz
  • 🔍 Moderationsfunktionen für Kommentare
  • 📱 Integration sozialer Feeds
  • ♾️ Unendliche Scroll-Paginierung
  • 🎨 Umfassendes Theming

Anforderungen Internal Link


  • Android SDK 26+ (Android 8.0 Oreo oder neuer)
  • Java 8+

Installation Internal Link

Fügen Sie das FastComments SDK zur build.gradle.kts-Datei Ihrer App hinzu:

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

Stellen Sie sicher, dass Sie das Repsy-Repository in der settings.gradle.kts-Datei Ihres Projekts haben:

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

Grundlegende Nutzung Internal Link

1. Fügen Sie FastCommentsView zu Ihrem Layout hinzu

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

2. Initialisieren und konfigurieren Sie das SDK

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

// Zusätzliche Konfigurationsoptionen
config.voteStyle = VoteStyle.UpDown // oder VoteStyle.Heart
config.enableInfiniteScrolling = true
config.hasDarkBackground = true // zur Unterstützung des Dunkelmodus

// SDK initialisieren
val sdk = FastCommentsSDK(config)

// Kommentaransicht in Ihrem Layout finden
val commentsView = findViewById<FastCommentsView>(R.id.commentsView)

// SDK-Instanz für die Ansicht setzen
commentsView.setSDK(sdk)

// Kommentare laden
commentsView.load()

Sichere SSO-Authentifizierung Internal Link

Implementieren Sie eine sichere Authentifizierung für Ihre Benutzer:

// Benutzerdaten erstellen (idealerweise auf Ihrem Server)
val userData = SecureSSOUserData(
    "user-id",
    "user@example.com",
    "User Name",
    "https://path-to-avatar.jpg"
)

// SSO-Token generieren (sollte serverseitig erfolgen!)
val sso = FastCommentsSSO.createSecure("YOUR_API_KEY", userData)
val token = sso.prepareToSend()

// Zur Konfiguration hinzufügen
config.sso = token

Feed-Integration Internal Link

Einen Social-Media-ähnlichen Feed mit Kommentaren anzeigen:

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

// Feed-SDK initialisieren
FastCommentsFeedSDK feedSDK = new FastCommentsFeedSDK(config);

// Feed-Ansicht einrichten
FastCommentsFeedView feedView = findViewById(R.id.feedView);
feedView.setSDK(feedSDK);

// Interaktions-Listener festlegen
feedView.setFeedViewInteractionListener(new FastCommentsFeedView.OnFeedViewInteractionListener() {
    @Override
    public void onFeedLoaded(List<FeedPost> posts) {
        // Feed erfolgreich geladen
    }

    @Override
    public void onFeedError(String errorMessage) {
        // Fehler behandeln
    }

    @Override
    public void onPostSelected(FeedPost post) {
        // Benutzer hat einen Beitrag ausgewählt
    }

    @Override
    public void onCommentsRequested(FeedPost post) {
        // Kommentare für den Beitrag anzeigen
        CommentsDialog dialog = new CommentsDialog(context, post, feedSDK);
        dialog.show();
    }
});

// Feed laden
feedView.load();

Live-Chat-Integration Internal Link

Fügen Sie Ihrer App eine Echtzeit-Chat-Schnittstelle hinzu:

// Fügen Sie LiveChatView zu Ihrem Layout-XML hinzu
// <com.fastcomments.sdk.LiveChatView
//     android:id="@+id/liveChatView"
//     android:layout_width="match_parent"
//     android:layout_height="match_parent" />

// Erstellen Sie eine Konfiguration für das SDK
val config = CommentWidgetConfig().apply {
    tenantId = "your-tenant-id"
    urlId = "chat-room-identifier" 
    pageTitle = "Chat Room Name"
}
LiveChatView.setupLiveChatConfig(config)

// Optional: Benutzer-Authentifizierung hinzufügen
val userData = SimpleSSOUserData(
    "User Name",
    "user@example.com",
    "https://path-to-avatar.jpg"
)
val sso = FastCommentsSSO(userData)
config.sso = sso.prepareToSend()

// Initialisieren Sie das SDK
val sdk = FastCommentsSDK().configure(config)

// Richten Sie die LiveChatView ein
val liveChatView = findViewById<LiveChatView>(R.id.liveChatView)
liveChatView.setSDK(sdk)
liveChatView.load()

// Vergessen Sie nicht die Lebenszyklusbehandlung
override fun onResume() {
    super.onResume()
    sdk.refreshLiveEvents()
}

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

Beispielprojekte Internal Link

Schauen Sie sich diese Demo-Implementierungen an:

Konfigurationsoptionen Internal Link

Das SDK bietet viele Konfigurationsoptionen über die Klasse CommentWidgetConfig:

Option Beschreibung
tenantId Ihre FastComments-Konto-ID
urlId ID, die die aktuelle Seite repräsentiert
sso SSO-Token zur Authentifizierung
allowAnon Anonyme Kommentare erlauben
voteStyle Voting-Stil: UpDown oder Heart
hideAvatars Benutzer-Avatare ausblenden
hasDarkBackground Gibt an, dass Dunkelmodus aktiv ist
customCSS Benutzerdefinierte CSS-Stile
enableInfiniteScrolling Unendliches Scrollen (Paginierung) aktivieren
readonly Kommentieren deaktivieren, aber Kommentare anzeigen
disableVoting Voting-Funktionalität deaktivieren
disableLiveCommenting Echtzeit-Updates deaktivieren

Umfassende Anpassung des Designs Internal Link

Alle Schaltflächen und UI-Elemente im FastComments SDK sind themenfähig. Verwenden Sie FastCommentsTheme.Builder für vollständige Kontrolle über das Branding Ihrer App.

Programmgesteuerte Themenanpassung (empfohlen)

val theme = FastCommentsTheme.Builder()
    // Aktionsschaltflächen: Senden, Abstimmen, Menü, Like/Teilen-Schaltflächen
    .setActionButtonColor(Color.parseColor("#FF1976D2"))

    // Antwort-Schaltflächen: Kommentar-Antwort-Schaltflächen  
    .setReplyButtonColor(Color.parseColor("#FF4CAF50"))

    // Umschalt-Schaltflächen: Schaltflächen zum Anzeigen/Verbergen von Antworten
    .setToggleRepliesButtonColor(Color.parseColor("#FFFF5722"))

    // "Load more"-Schaltflächen: Paginierungs-Schaltflächen
    .setLoadMoreButtonTextColor(Color.parseColor("#FF9C27B0"))

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

// Theme anwenden
sdk.setTheme(theme)

Schnelles Überschreiben von Farben

Override von Farbressourcen in Ihrer colors.xml für einfaches Branding:

<!-- In Ihrer App: res/values/colors.xml -->
<resources>
    <!-- Alle primären UI-Elemente ändern -->
    <color name="primary">#FF1976D2</color>

    <!-- Oder spezifische Schaltflächentypen anpassen -->
    <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>

Abdeckung thematisierter Schaltflächen

Jede Schaltfläche im SDK unterstützt Themes:

  • Sende-Schaltflächen, Abstimm-Schaltflächen, Menü-Schaltflächen, Antwort-Schaltflächen
  • Schaltflächen zum Anzeigen/Verbergen von Antworten, "Load more"-Schaltflächen
  • Feed-Aktionsschaltflächen (Gefällt mir, Kommentar, Teilen)
  • Dialogschaltflächen (Absenden, Abbrechen, Speichern)
  • Dynamische Aufgaben-Schaltflächen in Feed-Beiträgen

Für ausführliche Dokumentation zur Themenanpassung siehe THEMING.md.

Speicherverwaltung Internal Link

Vermeidung von Speicherlecks

Um Speicherlecks zu vermeiden, rufen Sie beim Verwenden von FastComments-Views in Activities oder Fragments immer cleanup() auf, wenn die View nicht mehr benötigt wird:

In Activities:

@Override
protected void onDestroy() {
    super.onDestroy();
    // FastComments-Views bereinigen, um Speicherlecks zu verhindern
    if (feedView != null) {
        feedView.cleanup();
    }
    if (commentsView != null) {
        commentsView.cleanup();
    }
}

In Fragments:

@Override
public void onDestroyView() {
    super.onDestroyView();
    // FastComments-Views bereinigen, wenn die Fragment-View zerstört wird
    if (feedView != null) {
        feedView.cleanup();
        feedView = null;
    }
}

@Override
public void onDestroy() {
    super.onDestroy();
    // Zusätzliche Bereinigung, wenn das Fragment zerstört wird
    if (feedSDK != null) {
        feedSDK.cleanup();
        feedSDK = null;
    }
}

When Switching Fragments:

// Vor dem Ersetzen oder Entfernen eines Fragments, das FastComments-Views enthält
Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.container);
if (currentFragment instanceof YourFragmentWithFeedView) {
    ((YourFragmentWithFeedView) currentFragment).cleanupFeedView();
}

// Dann mit der Fragment-Transaktion fortfahren
getSupportFragmentManager().beginTransaction()
    .replace(R.id.container, newFragment)
    .commit();

Wichtig: Rufen Sie immer die cleanup()-Methoden auf, um Speicherlecks zu verhindern, insbesondere wenn:

  • Activities zerstört werden
  • Fragment-Views zerstört werden
  • Zwischen Fragments gewechselt wird
  • Beim Verlassen von Bildschirmen, die FastComments-Komponenten enthalten

Benötigen Sie Hilfe?

Wenn Sie auf Probleme stoßen oder Fragen zur Android-Bibliothek haben, bitte:

Mitwirken

Beiträge sind willkommen! Bitte besuchen Sie das GitHub-Repository für Beitragsrichtlinien.