O Chatting é um aplicativo de mensagens instantâneas desenvolvido com foco em privacidade, segurança e facilidade de uso. Nossa missão é proporcionar uma plataforma de comunicação que respeite integralmente a privacidade dos usuários, mantendo seus dados seguros e sob seu controle.
Compromisso com a privacidade: Seus dados pertencem apenas a você. Não compartilhamos, vendemos ou fornecemos suas informações para terceiros, instituições ou governos.
O Chatting coleta apenas os dados mínimos necessários para o funcionamento do serviço:
Todos os dados são armazenados localmente no seu dispositivo usando criptografia SQLite. As mensagens são criptografadas de ponta a ponta, o que significa que apenas você e o destinatário podem ler o conteúdo das mensagens.
Suas mensagens são armazenadas exclusivamente no seu dispositivo. Nossos servidores funcionam apenas como intermediários temporários para entrega de mensagens e não mantêm registros permanentes das conversas.
O Chatting tem um compromisso rigoroso de não compartilhar dados com terceiros:
Implementamos medidas rigorosas de segurança para proteger seus dados:
Importante: Nunca solicitamos sua senha ou dados pessoais por mensagens. Desconfie de qualquer solicitação desse tipo.
O Chatting não pode ser utilizado para:
O Chatting respeita a liberdade de expressão, mas não tolera o uso do aplicativo para atividades ilegais ou prejudiciais.
O Chatting é desenvolvido seguindo a arquitetura MVVM (Model-View-ViewModel) com os seguintes componentes principais:
O Chatting utiliza o Room Persistence Library para gerenciar o banco de dados SQLite local. As principais entidades incluem:
// Exemplo de estrutura de entidades
@Entity(tableName = "users")
data class User(
@PrimaryKey val userId: String,
val username: String,
val profilePicUrl: String?
)
@Entity(tableName = "chats")
data class Chat(
@PrimaryKey val chatId: String,
val chatName: String,
val isGroup: Boolean,
val lastMessageTime: Long
)
@Entity(
tableName = "messages",
foreignKeys = [
ForeignKey(
entity = Chat::class,
parentColumns = ["chatId"],
childColumns = ["chatId"],
onDelete = ForeignKey.CASCADE
)
]
)
data class Message(
@PrimaryKey val messageId: String,
val chatId: String,
val senderId: String,
val content: String,
val timestamp: Long,
val isRead: Boolean
)
O aplicativo implementa um sistema robusto de tratamento de erros, incluindo:
Para garantir a integridade dos dados, todas as operações de banco de dados que envolvem múltiplas tabelas são realizadas dentro de transações atômicas.
Se você encontrar o erro SQLiteConstraintException: FOREIGN KEY constraint failed
, isso geralmente indica que:
Solução recomendada:
// Implementar transações para garantir a ordem correta de inserção
@Transaction
suspend fun insertChatAndMessages(chat: Chat, messages: List) {
chatDao.insert(chat) // Insere o registro pai primeiro
messageDao.insertAllMessages(messages) // Insere os registros filhos depois
}
Todas as mensagens são protegidas com criptografia de ponta a ponta, garantindo que apenas você e o destinatário possam ler o conteúdo.
Realize chamadas de voz e vídeo com a mesma proteção de criptografia aplicada às mensagens de texto.
Crie grupos com até 500 participantes para conversas coletivas, mantendo o mesmo nível de privacidade e segurança.
Compartilhe fotos, vídeos e documentos de forma segura, com criptografia aplicada a todos os tipos de arquivos.
Configure mensagens para desaparecerem automaticamente após um período determinado, aumentando ainda mais sua privacidade.
Faça backup de suas conversas localmente no seu dispositivo, sem depender de serviços de nuvem de terceiros.