
Sprog 🇩🇰 Dansk
Dokumentation
Kom godt i gang
Brug
Godkendelse
Konfiguration
FastComments Android Library
Dette er det officielle Android-bibliotek for FastComments.
FastComments kommenteringswidgets til Android
Repository
Funktioner 
- 🔄 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
Installation 
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 
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 
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 
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 
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 
Se disse demoimplementeringer:
- Eksempel: Grundlæggende kommentarer
- Sikker SSO-implementering
- Eksempel: Feed-integration
- Eksempel: Live-chat
- Eksempel: Kommentar-dialog
Konfigurationsindstillinger 
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 
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 
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.