FastComments.com

FastComments Android Library


Esta es la biblioteca oficial de Android para FastComments.

Widgets de comentarios de FastComments para Android

Repositorio

Ver en GitHub


Características Internal Link


  • 🔄 Comentarios en vivo con actualizaciones en tiempo real
  • 📱 Componentes de IU nativos para Android
  • 🧵 Discusiones en hilos con respuestas
  • 👤 Autenticación SSO segura
  • 👍 Sistema de votación con estilos personalizables
  • 🔔 Notificaciones y presencia de usuarios
  • 🔍 Capacidades de moderación de comentarios
  • 📱 Integración de feeds sociales
  • ♾️ Paginación con desplazamiento infinito
  • 🎨 Personalización completa de temas

Requisitos Internal Link


  • Android SDK 26+ (Android 8.0 Oreo o posterior)
  • Java 8+

Instalación Internal Link

Agrega el SDK de FastComments al archivo build.gradle.kts de tu aplicación:

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

Asegúrate de tener el repositorio Repsy en el archivo settings.gradle.kts de tu proyecto:

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

Uso básico Internal Link

1. Agrega FastCommentsView a tu diseño

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

2. Inicializa y configura el SDK

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

// Opciones de configuración adicionales
config.voteStyle = VoteStyle.UpDown // o VoteStyle.Heart
config.enableInfiniteScrolling = true
config.hasDarkBackground = true // para soporte de modo oscuro

// Inicializa el SDK
val sdk = FastCommentsSDK(config)

// Busca la vista de comentarios en tu diseño
val commentsView = findViewById<FastCommentsView>(R.id.commentsView)

// Asigna la instancia del SDK a la vista
commentsView.setSDK(sdk)

// Carga los comentarios
commentsView.load()

Autenticación SSO segura Internal Link

Implemente la autenticación segura para sus usuarios:

// Crear datos de usuario (idealmente en su servidor)
val userData = SecureSSOUserData(
    "user-id",
    "user@example.com",
    "User Name",
    "https://path-to-avatar.jpg"
)

// Generar token SSO (¡debe hacerse del lado del servidor!)
val sso = FastCommentsSSO.createSecure("YOUR_API_KEY", userData)
val token = sso.prepareToSend()

// Agregar a la configuración
config.sso = token

Integración de feeds Internal Link

Muestra un feed al estilo de redes sociales con comentarios:

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

// Inicializar el Feed SDK
FastCommentsFeedSDK feedSDK = new FastCommentsFeedSDK(config);

// Configurar la vista del feed
FastCommentsFeedView feedView = findViewById(R.id.feedView);
feedView.setSDK(feedSDK);

// Establecer el listener de interacción
feedView.setFeedViewInteractionListener(new FastCommentsFeedView.OnFeedViewInteractionListener() {
    @Override
    public void onFeedLoaded(List<FeedPost> posts) {
        // Feed cargado correctamente
    }

    @Override
    public void onFeedError(String errorMessage) {
        // Manejar errores
    }

    @Override
    public void onPostSelected(FeedPost post) {
        // Usuario seleccionó una publicación
    }

    @Override
    public void onCommentsRequested(FeedPost post) {
        // Mostrar comentarios de la publicación
        CommentsDialog dialog = new CommentsDialog(context, post, feedSDK);
        dialog.show();
    }
});

// Cargar el feed
feedView.load();

Integración de chat en vivo Internal Link

Agrega una interfaz de chat en tiempo real a tu aplicación:

// Agrega LiveChatView a tu layout XML
// <com.fastcomments.sdk.LiveChatView
//     android:id="@+id/liveChatView"
//     android:layout_width="match_parent"
//     android:layout_height="match_parent" />

// Crea una configuración para el SDK
val config = CommentWidgetConfig().apply {
    tenantId = "your-tenant-id"
    urlId = "chat-room-identifier" 
    pageTitle = "Chat Room Name"
}
LiveChatView.setupLiveChatConfig(config)

// Opcional: Agrega autenticación de usuario
val userData = SimpleSSOUserData(
    "User Name",
    "user@example.com",
    "https://path-to-avatar.jpg"
)
val sso = FastCommentsSSO(userData)
config.sso = sso.prepareToSend()

// Inicializa el SDK
val sdk = FastCommentsSDK().configure(config)

// Configura la vista de chat en vivo
val liveChatView = findViewById<LiveChatView>(R.id.liveChatView)
liveChatView.setSDK(sdk)
liveChatView.load()

// No olvides el manejo del ciclo de vida
override fun onResume() {
    super.onResume()
    sdk.refreshLiveEvents()
}

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

Proyectos de ejemplo Internal Link


Echa un vistazo a estas implementaciones de demostración:


Opciones de configuración Internal Link


El SDK ofrece muchas opciones de configuración a través de la clase CommentWidgetConfig:

Option Description
tenantId ID de su cuenta de FastComments
urlId ID que representa la página actual
sso Token SSO para la autenticación
allowAnon Permitir comentarios anónimos
voteStyle Estilo de votación UpDown o Heart
hideAvatars Ocultar avatares de usuario
hasDarkBackground Indica modo oscuro
customCSS Estilos CSS personalizados
enableInfiniteScrolling Habilitar paginación por desplazamiento infinito
readonly Desactivar la posibilidad de comentar pero mostrar los comentarios
disableVoting Desactivar la funcionalidad de votación
disableLiveCommenting Desactivar las actualizaciones en tiempo real
---

Personalización completa del tema Internal Link

Todos los botones y elementos de la interfaz de usuario en el SDK de FastComments son personalizables mediante temas. Usa FastCommentsTheme.Builder para tener control completo sobre la identidad visual de tu aplicación.

Tematización programática (recomendado)

val theme = FastCommentsTheme.Builder()
    // Botones de acción: enviar, votar, menú, botones de me gusta/compartir
    .setActionButtonColor(Color.parseColor("#FF1976D2"))

    // Botones de respuesta: botones de respuesta a comentarios  
    .setReplyButtonColor(Color.parseColor("#FF4CAF50"))

    // Botones alternables: botones de mostrar/ocultar respuestas
    .setToggleRepliesButtonColor(Color.parseColor("#FFFF5722"))

    // Botones de cargar más: botones de paginación
    .setLoadMoreButtonTextColor(Color.parseColor("#FF9C27B0"))

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

// Aplicar el tema
sdk.setTheme(theme)

Anulación rápida de colores

Override color resources in your colors.xml for simple branding:

<!-- En el res/values/colors.xml de tu aplicación -->
<resources>
    <!-- Cambia todos los elementos principales de la interfaz de usuario -->
    <color name="primary">#FF1976D2</color>

    <!-- O personaliza tipos de botones específicos -->
    <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>

Cobertura de botones tematizados

Cada botón en el SDK admite tematización:

  • Botones de enviar, botones de voto, botones de menú, botones de respuesta
  • Botones de mostrar/ocultar respuestas, botones de cargar más
  • Botones de acción del feed (me gusta, comentar, compartir)
  • Botones de diálogo (enviar, cancelar, guardar)
  • Botones de tareas dinámicas en entradas del feed

Para documentación detallada sobre tematización, consulta THEMING.md.

Gestión de memoria Internal Link

Prevención de fugas de memoria

Para evitar fugas de memoria al usar vistas de FastComments en Actividades o Fragmentos, siempre llama a cleanup() cuando la vista ya no sea necesaria:

En Actividades:

@Override
protected void onDestroy() {
    super.onDestroy();
    // Limpiar vistas de FastComments para evitar fugas de memoria
    if (feedView != null) {
        feedView.cleanup();
    }
    if (commentsView != null) {
        commentsView.cleanup();
    }
}

En Fragmentos:

@Override
public void onDestroyView() {
    super.onDestroyView();
    // Limpiar vistas de FastComments cuando la vista del fragmento se destruye
    if (feedView != null) {
        feedView.cleanup();
        feedView = null;
    }
}

@Override
public void onDestroy() {
    super.onDestroy();
    // Limpieza adicional cuando el fragmento se destruye
    if (feedSDK != null) {
        feedSDK.cleanup();
        feedSDK = null;
    }
}

Al cambiar de Fragmentos:

// Antes de reemplazar o quitar un fragmento que contenga vistas de FastComments
Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.container);
if (currentFragment instanceof YourFragmentWithFeedView) {
    ((YourFragmentWithFeedView) currentFragment).cleanupFeedView();
}

// Luego continúa con la transacción de fragmentos
getSupportFragmentManager().beginTransaction()
    .replace(R.id.container, newFragment)
    .commit();

Importante: Siempre llama a los métodos cleanup() para evitar fugas de memoria, especialmente cuando:

  • Se destruyen las Actividades
  • Se destruyen las vistas de los Fragmentos
  • Al cambiar entre Fragmentos
  • Al navegar fuera de pantallas con componentes de FastComments

¿Necesita ayuda?

Si encuentra algún problema o tiene preguntas sobre la biblioteca de Android, por favor:

Contribuciones

¡Las contribuciones son bienvenidas! Por favor visite el repositorio de GitHub para las directrices de contribución.