Ir para o conteúdo

Recomendações para o uso do Rox.Chat Mobile SDK

Este artigo descreve os problemas mais comuns encontrados ao desenvolver/usar um aplicativo móvel baseado no Rox.Chat Mobile SDK, suas soluções e recomendações úteis para os desenvolvedores.

#1 Ao abrir um chat no aplicativo móvel, a sessão é fechada imediatamente

Se ocorrer um erro crítico ao se conectar ao servidor, a sessão poderá se fechar sozinha, pois quando esse erro ocorre, ela não pode mais ser usada.

Nesse caso, recomenda-se tratar os erros críticos usando o método onError da interface FatalErrorHandler e chamar .setErrorHandler(FatalErrorHandler) ao configurar a sessão. O tratamento, nesse caso, significa exibir uma mensagem de erro e/ou tentar criar uma nova sessão.

Também é recomendável verificar se o aplicativo móvel trata todos os erros críticos que podem vir do servidor.

#2 Ao enviar a primeira mensagem do aplicativo móvel, o pushbot envia a primeira mensagem duas vezes

Isso pode acontecer se o departamento no qual o chat está sendo executado tiver a configuração "O visitante deve fazer uma pergunta primeiro ", mas o aplicativo móvel não levar isso em consideração: nesse caso, ao iniciar o chat a partir do aplicativo móvel, a primeira mensagem do visitante será enviada não como a primeira pergunta, mas como uma mensagem normal. Para evitar essas situações no aplicativo móvel, o método startChatWithFirstQuestion deve ser usado.

#3 Não é possível iniciar um chat no aplicativo móvel enviando um arquivo

Nesse caso, vale a pena verificar a versão do SDK que você está usando para ver se é possível iniciar um chat enviando um arquivo. Por padrão, o método sendFile verifica se há um chat ativo antes de enviar um arquivo. Se não houver um bate-papo na sessão, o método retornará um erro. Entre em contato com o [suporte técnico] (mailto:support@rox.chat) para esclarecer a funcionalidade da versão do SDK que está usando.

#4 O servidor fica lento ao abrir um grande número de sessões ao mesmo tempo

Alguns aplicativos móveis baseados no Rox.Chat Mobile SDK têm a funcionalidade de obter informações sobre o número de mensagens não lidas. Devido a peculiaridades técnicas do Rox.Chat, é possível obter o número de mensagens não lidas somente quando há uma sessão ativa, o que faz com que não seja incomum experimentar atrasos graves e longos no Rox.Chat Server. Isso se deve ao fato de que um grande número de sessões abertas simultaneamente cria uma carga pesada no servidor. Se a funcionalidade descrita acima for implementada em seu aplicativo móvel, é recomendável fazer o seguinte:

  • Mantenha a sessão ativa somente quando a tela de bate-papo estiver aberta

  • Se você precisar atualizar dados, inicie a sessão somente para atualizar esses dados e interrompa-a imediatamente após receber a atualização.

!!! Note "N.B." Se ChatState corresponder a none/closed, a sessão poderá ser encerrada, pois o número de mensagens não lidas não muda em um chat inativo. Isso pode ser rastreado por meio do ChatStateListener.

  • Em outros casos, não deve haver nenhuma sessão ativa no aplicativo móvel

Um visitante autorizou no mesmo aplicativo móvel em diferentes dispositivos/em vários aplicativos móveis no mesmo dispositivo, mas as notificações por push não estão chegando a todos eles

Caso um visitante autorize por meio de um aplicativo móvel usando o Rox.Chat Mobile SDK, as notificações push relacionadas ao chat de suporte chegarão a ele em todos os dispositivos e em todos os aplicativos em que ele estiver autorizado usando seu visitor_id e/ou provided_visitor_id, ou seja, caso haja vários aplicativos móveis conectados a um servidor Rox.Chat em um dispositivo, as notificações, por exemplo, sobre uma nova mensagem serão enviadas a todos esses aplicativos (ou a todos os dispositivos em que o aplicativo móvel estiver instalado e autorizado). Caso as notificações por push não sejam enviadas a todos os aplicativos/dispositivos, recomendamos que se certifique de que, em todos os casos de autorização, o mesmo visitante receba o mesmo identificador (visitor_id ou provided_visitor_id).