FastComments.com

FastComments Android Library

Esta é a biblioteca Android oficial para o FastComments.

Widgets de comentários do FastComments para Android

Repositório

Ver no GitHub


Recursos Internal Link

  • 🔄 Comentários ao vivo com atualizações em tempo real
  • 📱 Componentes de UI nativos para Android
  • 🧵 Discussões encadeadas com respostas
  • 👤 Autenticação SSO segura
  • 👍 Sistema de votação com estilos personalizáveis
  • 🔔 Notificações de usuário e presença
  • 🔍 Recursos de moderação de comentários
  • 📱 Integração com feed social
  • ♾️ Paginação com rolagem infinita
  • 🎨 Personalização abrangente de temas

Requisitos Internal Link

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

Instalação Internal Link

Adicione o FastComments SDK ao arquivo build.gradle.kts do seu aplicativo:

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

Certifique-se de que o repositório Repsy esteja no arquivo settings.gradle.kts do seu projeto:

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

Uso básico Internal Link

1. Adicione o FastCommentsView ao seu layout

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

2. Inicialize e configure o SDK

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

// Opções adicionais de configuração
config.voteStyle = VoteStyle.UpDown // ou VoteStyle.Heart
config.enableInfiniteScrolling = true
config.hasDarkBackground = true // para suporte ao modo escuro

// Inicialize o SDK
val sdk = FastCommentsSDK(config)

// Encontre a view de comentários no seu layout
val commentsView = findViewById<FastCommentsView>(R.id.commentsView)

// Defina a instância do SDK para a view
commentsView.setSDK(sdk)

// Carregue os comentários
commentsView.load()

Autenticação SSO segura Internal Link

Implemente autenticação segura para seus usuários:

// Criar dados do usuário (idealmente no seu servidor)
val userData = SecureSSOUserData(
    "user-id",
    "user@example.com",
    "User Name",
    "https://path-to-avatar.jpg"
)

// Gerar token SSO (deve ser feito no servidor!)
val sso = FastCommentsSSO.createSecure("YOUR_API_KEY", userData)
val token = sso.prepareToSend()

// Adicionar à configuração
config.sso = token

Integração de Feed Internal Link

Exibir um feed no estilo de rede social com comentários:

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

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

// Configurar a visualização do feed
FastCommentsFeedView feedView = findViewById(R.id.feedView);
feedView.setSDK(feedSDK);

// Definir o listener de interação
feedView.setFeedViewInteractionListener(new FastCommentsFeedView.OnFeedViewInteractionListener() {
    @Override
    public void onFeedLoaded(List<FeedPost> posts) {
        // Feed carregado com sucesso
    }

    @Override
    public void onFeedError(String errorMessage) {
        // Lidar com erros
    }

    @Override
    public void onPostSelected(FeedPost post) {
        // Usuário selecionou um post
    }

    @Override
    public void onCommentsRequested(FeedPost post) {
        // Mostrar comentários para o post
        CommentsDialog dialog = new CommentsDialog(context, post, feedSDK);
        dialog.show();
    }
});

// Carregar o feed
feedView.load();

Integração de chat ao vivo Internal Link


Adicione uma interface de chat em tempo real ao seu aplicativo:

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

// Crie uma configuração para o SDK
val config = CommentWidgetConfig().apply {
    tenantId = "your-tenant-id"
    urlId = "chat-room-identifier" 
    pageTitle = "Chat Room Name"
}
LiveChatView.setupLiveChatConfig(config)

// Opcional: Adicione autenticação de usuário
val userData = SimpleSSOUserData(
    "User Name",
    "user@example.com",
    "https://path-to-avatar.jpg"
)
val sso = FastCommentsSSO(userData)
config.sso = sso.prepareToSend()

// Inicialize o SDK
val sdk = FastCommentsSDK().configure(config)

// Configure a visualização do chat ao vivo
val liveChatView = findViewById<LiveChatView>(R.id.liveChatView)
liveChatView.setSDK(sdk)
liveChatView.load()

// Não esqueça de tratar o ciclo de vida
override fun onResume() {
    super.onResume()
    sdk.refreshLiveEvents()
}

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

Projetos de exemplo Internal Link


Confira estas implementações de demonstração:


Opções de configuração Internal Link


O SDK fornece várias opções de configuração através da classe CommentWidgetConfig:

Opção Descrição
tenantId ID da sua conta FastComments
urlId ID que representa a página atual
sso Token SSO para autenticação
allowAnon Permitir comentários anônimos
voteStyle Estilo de votação UpDown ou Heart
hideAvatars Ocultar avatares de usuários
hasDarkBackground Indica modo escuro
customCSS Estilos CSS personalizados
enableInfiniteScrolling Habilitar paginação por rolagem infinita
readonly Desativar a possibilidade de comentar, mas exibir os comentários
disableVoting Desativar votação
disableLiveCommenting Desativar atualizações em tempo real
---

Personalização abrangente de temas Internal Link

Todos os botões e elementos de UI no FastComments SDK são personalizáveis. Use o FastCommentsTheme.Builder para controle completo da identidade visual do seu app.

Tematização Programática (Recomendado)

val theme = FastCommentsTheme.Builder()
    // Botões de ação: Enviar, votar, menu, botões curtir/compartilhar
    .setActionButtonColor(Color.parseColor("#FF1976D2"))

    // Botões de resposta: Botões para responder comentários  
    .setReplyButtonColor(Color.parseColor("#FF4CAF50"))

    // Botões de alternância: Botões de mostrar/ocultar respostas
    .setToggleRepliesButtonColor(Color.parseColor("#FFFF5722"))

    // Botões carregar mais: Botões de paginação
    .setLoadMoreButtonTextColor(Color.parseColor("#FF9C27B0"))

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

// Aplique o tema
sdk.setTheme(theme)

Substituição Rápida de Cores

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

<!-- No res/values/colors.xml do seu app -->
<resources>
    <!-- Altere todos os elementos principais da UI -->
    <color name="primary">#FF1976D2</color>

    <!-- Ou personalize tipos específicos de botões -->
    <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 Botões Tematizados

Todos os botões no SDK suportam temas:

  • Botões de envio, botões de voto, botões de menu, botões de resposta
  • Botões de mostrar/ocultar respostas, botões de carregar mais
  • Botões de ação do feed (curtir, comentar, compartilhar)
  • Botões de diálogo (enviar, cancelar, salvar)
  • Botões de tarefa dinâmica em publicações do feed

For detailed theming documentation, see THEMING.md.

Gerenciamento de memória Internal Link

Prevenção de Vazamentos de Memória

Para prevenir vazamentos de memória ao usar as views do FastComments em Activities ou Fragments, sempre chame cleanup() quando a view não for mais necessária:

Em Activities:

@Override
protected void onDestroy() {
    super.onDestroy();
    // Limpar as views do FastComments para prevenir vazamentos de memória
    if (feedView != null) {
        feedView.cleanup();
    }
    if (commentsView != null) {
        commentsView.cleanup();
    }
}

Em Fragments:

@Override
public void onDestroyView() {
    super.onDestroyView();
    // Limpar as views do FastComments quando a view do fragment for destruída
    if (feedView != null) {
        feedView.cleanup();
        feedView = null;
    }
}

@Override
public void onDestroy() {
    super.onDestroy();
    // Limpeza adicional quando o fragment for destruído
    if (feedSDK != null) {
        feedSDK.cleanup();
        feedSDK = null;
    }
}

Ao Alternar Fragments:

// Antes de substituir ou remover um fragment que contenha views do 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();

Importante: Sempre chame os métodos cleanup() para evitar vazamentos de memória, especialmente quando:

  • Activities são destruídas
  • As views de Fragment são destruídas
  • Ao alternar entre fragments
  • Ao navegar para fora de telas com componentes do FastComments

Precisa de ajuda?

Se você encontrar qualquer problema ou tiver dúvidas sobre a biblioteca Android, por favor:

Contribuindo

Contribuições são bem-vindas! Por favor, visite o repositório do GitHub para as diretrizes de contribuição.