FastComments.com

FastComments Android Library


Αυτή είναι η επίσημη βιβλιοθήκη Android για το FastComments.

Widgets σχολιασμού του FastComments για Android

Αποθετήριο

Προβολή στο GitHub


Χαρακτηριστικά Internal Link

  • 🔄 Ζωντανός σχολιασμός με ενημερώσεις σε πραγματικό χρόνο
  • 📱 Γηγενή στοιχεία διεπαφής χρήστη για Android
  • 🧵 Συζητήσεις σε νήματα με απαντήσεις
  • 👤 Ασφαλής αυθεντικοποίηση SSO
  • 👍 Σύστημα ψηφοφορίας με προσαρμόσιμα στυλ
  • 🔔 Ειδοποιήσεις χρηστών και ένδειξη παρουσίας
  • 🔍 Δυνατότητες διαχείρισης σχολίων
  • 📱 Ενσωμάτωση κοινωνικής ροής
  • ♾️ Σελιδοποίηση με απεριόριστη κύλιση
  • 🎨 Ολοκληρωμένη θεματοποίηση

Απαιτήσεις Internal Link

  • Android SDK 26+ (Android 8.0 Oreo ή μεταγενέστερη)
  • Java 8+

Εγκατάσταση Internal Link

Προσθέστε το FastComments SDK στο αρχείο build.gradle.kts της εφαρμογής σας:

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

Βεβαιωθείτε ότι έχετε το αποθετήριο Repsy στο αρχείο settings.gradle.kts του έργου σας:

dependencyResolutionManagement {
    repositories {
        maven {
            url = uri("https://repo.repsy.io/mvn/winrid/fastcomments")
        }
        // άλλα αποθετήρια...
    }
}

Βασική Χρήση Internal Link

1. Add FastCommentsView to your layout

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

2. Initialize and configure the SDK

// Διαμορφώστε το SDK
val config = CommentWidgetConfig(
    "your-tenant-id", 
    "page-url-id", 
    "Page Title", 
    "yourdomain.com", 
    "Site Name"
)

// Επιπρόσθετες επιλογές διαμόρφωσης
config.voteStyle = VoteStyle.UpDown // ή VoteStyle.Heart
config.enableInfiniteScrolling = true
config.hasDarkBackground = true // για υποστήριξη σκοτεινής λειτουργίας

// Αρχικοποιήστε το SDK
val sdk = FastCommentsSDK(config)

// Βρείτε την προβολή σχολίων στο layout σας
val commentsView = findViewById<FastCommentsView>(R.id.commentsView)

// Ορίστε το instance του SDK για την προβολή
commentsView.setSDK(sdk)

// Φορτώστε τα σχόλια
commentsView.load()

Ασφαλής Αυθεντικοποίηση SSO Internal Link

Υλοποιήστε ασφαλή πιστοποίηση για τους χρήστες σας:

// Δημιουργήστε δεδομένα χρήστη (κατά προτίμηση στον διακομιστή σας)
val userData = SecureSSOUserData(
    "user-id",
    "user@example.com",
    "User Name",
    "https://path-to-avatar.jpg"
)

// Generate SSO token (should be done server-side!)
val sso = FastCommentsSSO.createSecure("YOUR_API_KEY", userData)
val token = sso.prepareToSend()

// Προσθέστε στο config
config.sso = token

Ενσωμάτωση Ροής Internal Link

Εμφάνιση ροής σε στυλ κοινωνικού δικτύου με σχόλια:

// Διαμόρφωση του SDK
CommentWidgetConfig config = new CommentWidgetConfig();
config.tenantId = "your-tenant-id";
config.urlId = "page-url-id";

// Αρχικοποίηση του Feed SDK
FastCommentsFeedSDK feedSDK = new FastCommentsFeedSDK(config);

// Διαμόρφωση της προβολής ροής
FastCommentsFeedView feedView = findViewById(R.id.feedView);
feedView.setSDK(feedSDK);

// Ορισμός listener αλληλεπίδρασης
feedView.setFeedViewInteractionListener(new FastCommentsFeedView.OnFeedViewInteractionListener() {
    @Override
    public void onFeedLoaded(List<FeedPost> posts) {
        // Η ροή φορτώθηκε με επιτυχία
    }

    @Override
    public void onFeedError(String errorMessage) {
        // Διαχείριση σφαλμάτων
    }

    @Override
    public void onPostSelected(FeedPost post) {
        // Ο χρήστης επέλεξε μια ανάρτηση
    }

    @Override
    public void onCommentsRequested(FeedPost post) {
        // Εμφάνιση σχολίων για την ανάρτηση
        CommentsDialog dialog = new CommentsDialog(context, post, feedSDK);
        dialog.show();
    }
});

// Φόρτωση της ροής
feedView.load();

Ενσωμάτωση Ζωντανής Συνομιλίας Internal Link

Προσθέστε μια διεπαφή συνομιλίας σε πραγματικό χρόνο στην εφαρμογή σας:

// Προσθέστε το LiveChatView στο XML διάταξης σας
// <com.fastcomments.sdk.LiveChatView
//     android:id="@+id/liveChatView"
//     android:layout_width="match_parent"
//     android:layout_height="match_parent" />

// Δημιουργήστε μια διαμόρφωση για το SDK
val config = CommentWidgetConfig().apply {
    tenantId = "your-tenant-id"
    urlId = "chat-room-identifier" 
    pageTitle = "Chat Room Name"
}
LiveChatView.setupLiveChatConfig(config)

// Προαιρετικά: Προσθέστε αυθεντικοποίηση χρήστη
val userData = SimpleSSOUserData(
    "User Name",
    "user@example.com",
    "https://path-to-avatar.jpg"
)
val sso = FastCommentsSSO(userData)
config.sso = sso.prepareToSend()

// Αρχικοποιήστε το SDK
val sdk = FastCommentsSDK().configure(config)

// Ρυθμίστε το LiveChatView
val liveChatView = findViewById<LiveChatView>(R.id.liveChatView)
liveChatView.setSDK(sdk)
liveChatView.load()

// Μην ξεχάσετε τη διαχείριση του κύκλου ζωής
override fun onResume() {
    super.onResume()
    sdk.refreshLiveEvents()
}

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

Παραδείγματα Έργων Internal Link


Δείτε αυτές τις παραδείγματικές υλοποιήσεις:


Επιλογές Διαμόρφωσης Internal Link


Το SDK παρέχει πολλές επιλογές διαμόρφωσης μέσω της κλάσης CommentWidgetConfig:

Επιλογή Περιγραφή
tenantId Το ID του λογαριασμού FastComments σας
urlId Το ID που αντιπροσωπεύει την τρέχουσα σελίδα
sso token SSO για έλεγχο ταυτότητας
allowAnon Επιτρέπει τον ανώνυμο σχολιασμό
voteStyle Στυλ ψήφου UpDown ή Heart
hideAvatars Απόκρυψη avatar χρηστών
hasDarkBackground Υποδεικνύει σκοτεινή λειτουργία
customCSS Προσαρμοσμένα στυλ CSS
enableInfiniteScrolling Ενεργοποίηση απεριόριστης κύλισης για σελιδοποίηση
readonly Απενεργοποιεί τη δυνατότητα σχολιασμού αλλά εμφανίζει τα σχόλια
disableVoting Απενεργοποιεί τη δυνατότητα ψήφισης
disableLiveCommenting Απενεργοποιεί τις ενημερώσεις σε πραγματικό χρόνο
---

Εκτενής Προσαρμογή Θέματος Internal Link

Όλα τα κουμπιά και τα στοιχεία διεπαφής χρήστη (UI) στο FastComments SDK μπορούν να θεματοποιηθούν. Χρησιμοποιήστε το FastCommentsTheme.Builder για πλήρη έλεγχο της επωνυμίας της εφαρμογής σας.

Προγραμματική Θεματοποίηση (Συνιστάται)

val theme = FastCommentsTheme.Builder()
    // Κουμπιά ενέργειας: Αποστολή, ψήφος, μενού, κουμπιά like/share
    .setActionButtonColor(Color.parseColor("#FF1976D2"))

    // Κουμπιά απάντησης: Κουμπιά απάντησης σχολίου  
    .setReplyButtonColor(Color.parseColor("#FF4CAF50"))

    // Κουμπιά εναλλαγής: Κουμπιά εμφάνισης/απόκρυψης απαντήσεων
    .setToggleRepliesButtonColor(Color.parseColor("#FFFF5722"))

    // Κουμπιά φόρτωσης περισσότερων: Κουμπιά σελιδοποίησης
    .setLoadMoreButtonTextColor(Color.parseColor("#FF9C27B0"))

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

// Εφαρμόστε το θέμα
sdk.setTheme(theme)

Γρήγορη αντικατάσταση χρωμάτων

Παρακάμψτε τους πόρους χρωμάτων στο colors.xml της εφαρμογής σας για απλή προσαρμογή της επωνυμίας:

<!-- Στο res/values/colors.xml της εφαρμογής σας -->
<resources>
    <!-- Αλλάξτε όλα τα κύρια στοιχεία UI -->
    <color name="primary">#FF1976D2</color>

    <!-- Ή προσαρμόστε συγκεκριμένους τύπους κουμπιών -->
    <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>

Κάλυψη Θεματοποιημένων Κουμπιών

Κάθε κουμπί στο SDK υποστηρίζει θεματοποίηση:

  • Κουμπιά αποστολής, κουμπιά ψήφου, κουμπιά μενού, κουμπιά απάντησης
  • Κουμπιά εμφάνισης/απόκρυψης απαντήσεων, κουμπιά φόρτωσης περισσότερων
  • Κουμπιά ενέργειας ροής (μου αρέσει, σχόλιο, κοινοποίηση)
  • Κουμπιά διαλόγου (υποβολή, ακύρωση, αποθήκευση)
  • Δυναμικά κουμπιά εργασιών στις δημοσιεύσεις ροής

Για λεπτομερή τεκμηρίωση θεματοποίησης, δείτε THEMING.md.

Διαχείριση Μνήμης Internal Link

Πρόληψη διαρροών μνήμης

Για να αποφύγετε διαρροές μνήμης κατά τη χρήση των FastComments views σε Activities ή Fragments, καλέστε πάντα την cleanup() όταν η προβολή δεν χρειάζεται πλέον:

Σε Activities:

@Override
protected void onDestroy() {
    super.onDestroy();
    // Εκκαθάριση των προβολών FastComments για να αποφευχθούν διαρροές μνήμης
    if (feedView != null) {
        feedView.cleanup();
    }
    if (commentsView != null) {
        commentsView.cleanup();
    }
}

Σε Fragments:

@Override
public void onDestroyView() {
    super.onDestroyView();
    // Εκκαθάριση των προβολών FastComments όταν η προβολή του fragment καταστραφεί
    if (feedView != null) {
        feedView.cleanup();
        feedView = null;
    }
}

@Override
public void onDestroy() {
    super.onDestroy();
    // Επιπλέον εκκαθάριση όταν το fragment καταστραφεί
    if (feedSDK != null) {
        feedSDK.cleanup();
        feedSDK = null;
    }
}

Όταν γίνεται εναλλαγή Fragments:

// Πριν αντικαταστήσετε ή αφαιρέσετε ένα fragment που περιέχει προβολές FastComments
Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.container);
if (currentFragment instanceof YourFragmentWithFeedView) {
    ((YourFragmentWithFeedView) currentFragment).cleanupFeedView();
}

// Στη συνέχεια, προχωρήστε με τη συναλλαγή fragment
getSupportFragmentManager().beginTransaction()
    .replace(R.id.container, newFragment)
    .commit();

Σημαντικό: Καλείτε πάντα τις μεθόδους cleanup() για να αποτρέψετε διαρροές μνήμης, ιδιαίτερα όταν:

  • Activities καταστρέφονται
  • Οι προβολές των Fragments καταστρέφονται
  • Γίνεται εναλλαγή μεταξύ fragments
  • Πλοηγείστε μακριά από οθόνες με στοιχεία FastComments

Χρειάζεστε βοήθεια;

Εάν αντιμετωπίσετε προβλήματα ή έχετε ερωτήσεις σχετικά με τη Βιβλιοθήκη Android, παρακαλούμε:

Συνεισφορές

Οι συνεισφορές είναι ευπρόσδεκτες! Παρακαλούμε επισκεφθείτε το αποθετήριο GitHub για τις οδηγίες συνεισφοράς.