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")
        }
        // other repositories...
    }
}

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

1. Προσθέστε το FastCommentsView στη διάταξή σας

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

2. Αρχικοποιήστε και διαμορφώστε το 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)

// Εντοπισμός της προβολής σχολίων στη διάταξή σας
val commentsView = findViewById<FastCommentsView>(R.id.commentsView)

// Ορισμός του SDK για την προβολή
commentsView.setSDK(sdk)

// Φόρτωση σχολίων
commentsView.load()

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

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

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

// Δημιουργία SSO token (θα πρέπει να γίνεται στον διακομιστή!)
val sso = FastCommentsSSO.createSecure("YOUR_API_KEY", userData)
val token = sso.prepareToSend()

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

Ολοκληρωμένη προσαρμογή θέματος Internal Link

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

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

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 της εφαρμογής σας για εύκολο branding:

<!-- Στο res/values/colors.xml της εφαρμογής σας -->
<resources>
    <!-- Αλλάξτε όλα τα βασικά στοιχεία διεπαφής χρήστη -->
    <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 υποστηρίζει θεματοποίηση:

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

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

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

Αποτροπή Διαρροών Μνήμης

Για να αποτρέψετε διαρροές μνήμης όταν χρησιμοποιείτε προβολές FastComments σε 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();
}

// Then proceed with fragment transaction
getSupportFragmentManager().beginTransaction()
    .replace(R.id.container, newFragment)
    .commit();

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

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

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

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

Συνεισφορά

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