Guia de Desenvolvimento para Cliente Android com MobileIMSDK

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

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:

  1. Copie o arquivo mobileimsdk-core.jar para a pasta libs/ do seu projeto Android.
  2. 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.

Tags: MobileIMSDK android comunicação instantânea socket UDP QoS

Publicado em 8-16 21:39