Introdução ao MobileIMSDK
MobileIMSDK é um projeto open-source leve voltado para comunicação instantânea móvel, desenvolvido e mantido endividualmente. Este guia tem como objetivo auxiliar desenvolvedores a integrar rapidamente o SDK em aplicações Android. O código-fonte completo está disponível no Git@OSC e GitHub.
Recursos Adicionais
- Repositório oficial: Acesse aqui
- Documentação do cliente Android: Clique para acessar
- Comunidade de discussão: Grupo Telegram ou Discord (recomendado)
- Suporte técnico e relato de bugs: envie para dev.support@mobileim.net
Experimente o Aplicativo Demo
Antes de começar, você pode baixar o APK pré-compilado para testar as funcionalidades básicas. O projeto demo completo encontra-se na pasta src_all/client/android/MobileIMSDK4a/ do pacote baixado, compatível com ambientes Eclipse+ADT.
Etapa 1: Preparação da Integração
Baixe o SDK
Obtenha a versão mais recente através do link oficial de download ou clone diretamente do repositório GitHub. Dentro do pacote, localize os arquivos JAR necessários na pasta dist/client/android/.
Inclua o JAR no Projeto
O SDK suporta dispositivos com Android 2.3 (API Level 9) ou superior. Para adicionar ao seu projeto:
- Copie o arquivo
mobileimsdk-core.jarpara a pastalibs/do seu projeto Android. - No Eclipse ou Android Studio, atualize o classpath (tecla F5) para garantir que a biblioteca seja reconhecida.
Etapa 2: Implementação no Código
Configuração Inicial
Antes de qualquer operação, inicialize o SDK com as configurações essenciais:
// Definição da chave da aplicação
ConfigEntity.appKey = "5418023dfd98c579b6001741";
// Endereço e porta do servidor
ConfigEntity.serverIP = "rbcore.openmob.net";
ConfigEntity.serverUDPPort = 7901;
// Inicialização obrigatória do núcleo
ClientCoreSDK.getInstance().init(context);
Implementação de Callbacks
Registre ouvintes para tratar eventos críticos durante a comunicação.
Eventos Básicos de Conexão``` public class BasicConnectionHandler implements ChatBaseEvent { @Override public void onLoginMessage(int userId, int errorCode) { if (errorCode == 0) { Log.d("IM", "Autenticado com sucesso. ID do usuário: " + userId); } else { Log.e("IM", "Falha ao conectar. Código: " + errorCode); } }
@Override
public void onLinkCloseMessage(int errorCode) {
Log.w("IM", "Conexão encerrada. Erro: " + errorCode);
}
}
**Reccebimento de Mensagens em Tempo Real**```
public class MessageReceiver implements ChatTransDataEvent {
@Override
public void onTransBuffer(String fingerprint, int senderId, String content) {
Log.d("IM", "Mensagem recebida de " + senderId + ": " + content);
}
@Override
public void onErrorResponse(int code, String message) {
Log.e("IM", "Erro do servidor - " + code + ": " + message);
}
}
Controle de Qualidade (QoS)``` public class QoSMonitor implements MessageQoSEvent { @Override public void messagesLost(ArrayList<Protocal> lostList) { Log.w("IM", "QoS detectou falha de entrega para " + lostList.size() + " mensagens."); }
@Override
public void messagesBeReceived(String fp) {
if (fp != null) {
Log.d("IM", "Confirmação de recebimento obtida. Impressão: " + fp);
}
}
}
**Registro dos Observadores**```
ClientCoreSDK core = ClientCoreSDK.getInstance();
core.setChatBaseEvent(new BasicConnectionHandler());
core.setChatTransDataEvent(new MessageReceiver());
core.setMessageQoSEvent(new QoSMonitor());
Autenticação no Servidor
Após configurar os callbacks, inicie o processo de login assíncrono:
new LocalUDPDataSender.SendLoginDataAsync("usuario123", "senhaSegura") {
@Override
protected void fireAfterSendLogin(int status) {
if (status == 0) {
Log.d("IM", "Solicitação de login enviada com sucesso.");
} else {
Log.e("IM", "Falha no envio do login. Status: " + status);
}
}
}.execute();
Envio de Mensagem Instantânea
Para transmitir uma mensagem a outro usuário, utilize:
String mensagem = "Olá, esta é uma mensagem de teste!";
int destinatarioId = 8888;
new LocalUDPDataSender.SendCommonDataAsync(mensagem, destinatarioId, true) {
@Override
protected void onPostExecute(Integer resultado) {
if (resultado == 0) {
Log.d("IM", "Mensagem enviada com sucesso.");
} else {
Log.e("IM", "Falha ao enviar. Código: " + resultado);
}
}
}.execute();
Considerações Finais e Dicas
Otimização de Consumo de Energia
Para reduzir o impacto sobre a bateria, ajuste o modo de sensibilidade do cliente:
ConfigEntity.setSenseMode(SenseMode.MODE_10S);
Este ajuste altera a frequência com que o cliente verifica novos dados. Modos disponíveis incluem MODE_3S, MODE_10S e MODE_30S. Importante: todos os clientes e o servidor devem usar o mesmo modo para evitar inconsistências no protocolo.
Consulte a documentação oficial para detalhes completos sobre APIs e comportamentos específicos.