
Idioma 🇧🇷 Português (Brasil)
Documentação
Primeiros passos
Uso
Autenticação
Configuração
FastComments Android Library
Esta é a biblioteca Android oficial para o FastComments.
Widgets de comentários do FastComments para Android
Repositório
Recursos 
- 🔄 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
Instalação 
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 
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 
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 
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 
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 
Confira estas implementações de demonstração:
- Exemplo Básico de Comentários
- Exemplo de Implementação SSO Segura
- Exemplo de Integração de Feed
- Exemplo de Chat Ao Vivo
- Exemplo de Diálogo de Comentários
Opções de configuração 
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 
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 
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.