Menu Docs
Página inicial do Docs
/ /
Atlas Device SDKs
/ /

Lidar com erros de aplicativos - Kotlin SDK

Nesta página

  • Erros de serviço
  • Erros de conexão
  • Erros de solicitação inválidos
  • Erros de autenticação
  • Exemplo

Os erros de aplicativos se enquadram em duas categorias principais:

  • erros de serviço ocorrem quando uma solicitação do Atlas App Services falha no nível HTTP. Esses erros geram umaServiceException

  • os erros de sincronização ocorrem quando o Device Sync falha. Esses erros geram uma SyncException. Para obter mais informações sobre exceções de sincronização, consulte Gerenciar erros de sincronização.

No entanto, alguns erros são efêmeros: eles ocorrem devido a falhas fora do controle do cliente ou do SDK. Por exemplo, uma tentativa fracassada de login devido a um erro de rede.

Outros erros exigem correções lógicas. Por exemplo, uma tentativa fracassada de login devido a credenciais incorretas.

Quando ocorre um erro efêmero, você deve tentar novamente a operação que causou o erro. Se a operação ainda falhar quando você tentar novamente, investigue as correções lógicas.

Uma ServiceException ocorre quando uma solicitação do Atlas App Services falha no nível do HTTP, ou seja, a solicitação do HTTP retornou, mas o código do status do HTTP não era 200 (OK).

Uma ConnectionException ocorre quando a comunicação HTTP falha entre o SDK e o backend do App Services, ou seja, a solicitação HTTP não pode receber um código de status.

Como esses erros resultam de camadas de rede fora do controle do SDK, você deve considerar esses erros efêmeros. Tente novamente a operação e investigue o erro se a nova tentativa falhar. Se a operação falhar porque o dispositivo cliente está offline, você pode solicitar ao usuário do aplicativo que tente novamente a operação quando se reconectar à Internet.

Uma Exceção de erro ocorre a partir de App Services requests malformadas.

Quando você recebe um erro de solicitação inválida:

  • Verifique as entradas para a operação.

  • Verifique os registros da aplicação para obter mais informações sobre o que deu errado.

Uma AuthException ocorre quando uma ação da conta de usuário, como login, logout ou registro, falha. Normalmente, você obterá um subtipo mais específico que o ajuda a identificar uma solução.

Uma UserAlreadyConfirmedException ocorre quando você tenta confirmar um usuário que você já confirmou.

Quando você recebe um erro de usuário já confirmado, é melhor não interromper o fluxo do aplicativo. Como o usuário está confirmado, você pode prosseguir com segurança para fazer login. Não é necessário tentar confirmar novamente.

Uma UserNotFoundException ocorre quando o backend do App Services não consegue localizar um usuário com o nome de usuário fornecido. Isso geralmente é causado por erros de digitação em nomes de usuário de e-mail/senha.

Quando você enfrentar esse erro, solicite ao usuário que insira novamente seu nome de usuário e tente novamente.

Uma UserAlreadyExistsException ocorre quando um cliente tenta registrar um usuário com um nome de usuário que já está em uso nesse aplicativo.

Quando você enfrentar esse erro, solicite aos usuários que:

  • usar um nome de usuário diferente

  • faça login com o nome de usuário existente se eles já tiverem uma conta

Uma InvalidCredentialsException ocorre quando um login de usuário de um JSON web token, e-mail/senha ou chave de API falha devido a credenciais inválidas. Em vez disso, outros fornecedores de autenticação exibem um erro de autenticação .

Você pode lidar com erros no SDK com o runCatching integrado do Kotlin API. Use onSuccess as onFailure chamadas de resposta e do Resultado retornado para lidar com chamadas de API do SDK bem-sucedidas e casos de erro. O exemplo a seguir registra um usuário anônimo em um aplicativo. Se a tentativa de login for bem-sucedida, registramos a tentativa de autenticação bem-sucedida e passamos o usuário para outra tela. Se a tentativa de login falhar, lidamos com cada caso de erro potencial individualmente:

  • Se o usuário forneceu credenciais inválidas, registramos a tentativa e exibimos um sistema pop-up incentivando o usuário a verificar suas credenciais.

  • Se houver um problema com a conexão de rede, registramos o problema no registro de erros e exibimos um sistema pop-up encorajando o usuário a verificar a conexão de rede e tentar novamente.

  • Para todos os outros erros, registramos o problema no registro de erros e exibimos um sistema pop-up informando ao usuário que a tentativa de login falhou.

val app = App.create(YOUR_APP_ID)
runCatching {
app.login(Credentials.emailPassword(email, password))
}.onSuccess {
Log.v("Successfully logged in")
// transition to another activity, load a fragment, to display logged-in user information here
}.onFailure { ex: Throwable ->
when (ex) {
is InvalidCredentialsException -> {
Log.v("Failed to login due to invalid credentials: ${ex.message}")
Toast.makeText(baseContext,
"Invalid username or password. Please try again.", Toast.LENGTH_LONG).show()
}
is ConnectionException -> {
Log.e("Failed to login due to a connection error: ${ex.message}")
Toast.makeText(baseContext,
"Login failed due to a connection error. Check your network connection and try again.", Toast.LENGTH_LONG).show()
}
else -> {
Log.e("Failed to login: ${ex.message}")
// generic error message for niche and unknown fail cases
Toast.makeText(baseContext,
"Login failed. Please try again.", Toast.LENGTH_LONG).show()
}
}
}

Voltar

Chamar uma Função do Atlas