FastComments.com

FastComments Android Library


Dette er det officielle Android-bibliotek for FastComments.

FastComments kommenteringswidgets til Android

Repository

Se på GitHub


Funktioner Internal Link

  • 🔄 Live-kommentering med opdateringer i realtid
  • 📱 Native Android UI-komponenter
  • 🧵 Trådede diskussioner med svar
  • 👤 Sikker SSO-autentificering
  • 👍 Afstemningssystem med tilpasselige stilarter
  • 🔔 Brugerunderretninger og tilstedeværelse
  • 🔍 Kommentarmoderationsfunktioner
  • 📱 Integration med sociale feeds
  • ♾️ Uendelig scroll-paginering
  • 🎨 Omfattende temaopsætning

Krav Internal Link

  • Android SDK 26+ (Android 8.0 Oreo eller senere)
  • Java 8+

Installation Internal Link

Tilføj FastComments SDK til din apps build.gradle.kts-fil:

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

Sørg for, at du har Repsy-repositoriet i dit projekts settings.gradle.kts:

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

Grundlæggende brug Internal Link

1. Tilføj FastCommentsView til dit layout

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

2. Initialiser og konfigurer SDK'et

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

// Yderligere konfigurationsmuligheder
config.voteStyle = VoteStyle.UpDown // eller VoteStyle.Heart
config.enableInfiniteScrolling = true
config.hasDarkBackground = true // til understøttelse af mørk tilstand

// Initialiser SDK'et
val sdk = FastCommentsSDK(config)

// Find comment-vinduet i dit layout
val commentsView = findViewById<FastCommentsView>(R.id.commentsView)

// Indstil SDK-instansen for visningen
commentsView.setSDK(sdk)

// Indlæs kommentarer
commentsView.load()

Sikker SSO-godkendelse Internal Link

Implementer sikker godkendelse for dine brugere:

// Opret brugerdata (ideelt set på din server)
val userData = SecureSSOUserData(
    "user-id",
    "user@example.com",
    "User Name",
    "https://path-to-avatar.jpg"
)

// Generer SSO-token (bør udføres på serversiden!)
val sso = FastCommentsSSO.createSecure("YOUR_API_KEY", userData)
val token = sso.prepareToSend()

// Tilføj til config
config.sso = token

Feed-integration Internal Link

Vis en socialmedie-lignende feed med kommentarer:

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

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

// Opsæt feed-visningen
FastCommentsFeedView feedView = findViewById(R.id.feedView);
feedView.setSDK(feedSDK);

// Sæt interaktionslytter
feedView.setFeedViewInteractionListener(new FastCommentsFeedView.OnFeedViewInteractionListener() {
    @Override
    public void onFeedLoaded(List<FeedPost> posts) {
        // Feed indlæst med succes
    }

    @Override
    public void onFeedError(String errorMessage) {
        // Håndter fejl
    }

    @Override
    public void onPostSelected(FeedPost post) {
        // Brugeren valgte et indlæg
    }

    @Override
    public void onCommentsRequested(FeedPost post) {
        // Vis kommentarer for indlægget
        CommentsDialog dialog = new CommentsDialog(context, post, feedSDK);
        dialog.show();
    }
});

// Load the feed
feedView.load();

Livechat-integration Internal Link

Tilføj en realtids-chatgrænseflade til din app:

// Tilføj LiveChatView til din layout-XML
// <com.fastcomments.sdk.LiveChatView
//     android:id="@+id/liveChatView"
//     android:layout_width="match_parent"
//     android:layout_height="match_parent" />

// Opret en konfiguration for SDK'en
val config = CommentWidgetConfig().apply {
    tenantId = "your-tenant-id"
    urlId = "chat-room-identifier" 
    pageTitle = "Chat Room Name"
}
LiveChatView.setupLiveChatConfig(config)

// Valgfrit: Tilføj brugerautentificering
val userData = SimpleSSOUserData(
    "User Name",
    "user@example.com",
    "https://path-to-avatar.jpg"
)
val sso = FastCommentsSSO(userData)
config.sso = sso.prepareToSend()

// Initialiser SDK'en
val sdk = FastCommentsSDK().configure(config)

// Opsæt live chat-visningen
val liveChatView = findViewById<LiveChatView>(R.id.liveChatView)
liveChatView.setSDK(sdk)
liveChatView.load()

// Glem ikke livscyklus-håndtering
override fun onResume() {
    super.onResume()
    sdk.refreshLiveEvents()
}

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

Eksempelprojekter Internal Link


Se disse demoimplementeringer:


Konfigurationsindstillinger Internal Link

SDK'et tilbyder mange konfigurationsmuligheder gennem CommentWidgetConfig-klassen:

Indstilling Beskrivelse
tenantId Din FastComments-konto-ID
urlId ID, der repræsenterer den aktuelle side
sso SSO-token til godkendelse
allowAnon Tillad anonyme kommentarer
voteStyle UpDown- eller Heart-afstemningsstil
hideAvatars Skjul brugeravatarer
hasDarkBackground Angiver mørk baggrund
customCSS Brugerdefinerede CSS-stilarter
enableInfiniteScrolling Aktivér uendelig rulning/paginering
readonly Deaktiver kommentering, men vis kommentarer
disableVoting Deaktiver stemmefunktionalitet
disableLiveCommenting Deaktiver realtidsopdateringer

Omfattende tema-tilpasning Internal Link

Alle knapper og UI-elementer i FastComments SDK kan tematiseres. Brug FastCommentsTheme.Builder for fuld kontrol over din apps branding.

Programmatisk temaindstilling (Anbefalet)

val theme = FastCommentsTheme.Builder()
    // Handlingsknapper: Send, stemmeknapper, menu, like/del-knapper
    .setActionButtonColor(Color.parseColor("#FF1976D2"))

    // Svarknapper: Knapper til at svare på kommentarer  
    .setReplyButtonColor(Color.parseColor("#FF4CAF50"))

    // Skiftknapper: Vis/skjul svar-knapper
    .setToggleRepliesButtonColor(Color.parseColor("#FFFF5722"))

    // Indlæs flere-knapper: Paginering knapper
    .setLoadMoreButtonTextColor(Color.parseColor("#FF9C27B0"))

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

// Anvend temaet
sdk.setTheme(theme)

Hurtig overskrivning af farver

Overskriv farveressourcer i din colors.xml for enkel branding:

<!-- I din apps res/values/colors.xml -->
<resources>
    <!-- Ændr alle primære UI-elementer -->
    <color name="primary">#FF1976D2</color>

    <!-- Eller tilpas specifikke knap-typer -->
    <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>

Dækning af tematiserede knapper

Hver knap i SDK'et understøtter temaindstilling:

  • Send-knapper, stemmeknapper, menuknapper, svarknapper
  • Vis/skjul svar-knapper, indlæs flere-knapper
  • Feed-handlingsknapper (like, kommentar, del)
  • Dialogknapper (send, annuller, gem)
  • Dynamiske opgaveknapper i feedindlæg

For detaljeret dokumentation om temaindstilling, se THEMING.md.

Hukommelsesstyring Internal Link

Forebyggelse af hukommelseslækager

For at forhindre hukommelseslækager når du bruger FastComments-visninger i Aktiviteter eller Fragmenter, kald altid cleanup() når visningen ikke længere er nødvendig:

I Aktiviteter:

@Override
protected void onDestroy() {
    super.onDestroy();
    // Ryd op i FastComments-visninger for at forhindre hukommelseslækager
    if (feedView != null) {
        feedView.cleanup();
    }
    if (commentsView != null) {
        commentsView.cleanup();
    }
}

I Fragmenter:

@Override
public void onDestroyView() {
    super.onDestroyView();
    // Ryd op i FastComments-visninger når fragmentets visning ødelægges
    if (feedView != null) {
        feedView.cleanup();
        feedView = null;
    }
}

@Override
public void onDestroy() {
    super.onDestroy();
    // Yderligere oprydning når fragmentet ødelægges
    if (feedSDK != null) {
        feedSDK.cleanup();
        feedSDK = null;
    }
}

Ved skift mellem fragmenter:

// Før du erstatter eller fjerner et fragment, der indeholder FastComments-visninger
Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.container);
if (currentFragment instanceof YourFragmentWithFeedView) {
    ((YourFragmentWithFeedView) currentFragment).cleanupFeedView();
}

// Fortsæt derefter med fragmenttransaktionen
getSupportFragmentManager().beginTransaction()
    .replace(R.id.container, newFragment)
    .commit();

Vigtigt: Kald altid cleanup()-metoder for at forhindre hukommelseslækager, især når:

  • Aktiviteter bliver ødelagt
  • Fragmentvisninger bliver ødelagt
  • Skift mellem fragmenter
  • Navigering væk fra skærme med FastComments-komponenter

Brug for hjælp?

Hvis du støder på problemer eller har spørgsmål om Android-biblioteket, så:

Bidrag

Bidrag er velkomne! Besøg venligst GitHub-repositoriet for retningslinjer for bidrag.