Tratar erros do Cloud Storage no Android

Às vezes as coisas não saem como planejado e ocorre um erro.

Na dúvida, verifique o erro retornado e veja o que diz a mensagem de erro. O código a seguir mostra uma implementação de gerenciador de erros personalizado que inspeciona o código e a mensagem de erro retornados pelo Cloud Storage. Esses manipuladores de erros podem ser adicionados a vários objetos usados ​​na API Cloud Storage (por exemplo, UploadTask e FileDownloadTask ).

Kotlin+KTX

internal inner class MyFailureListener : OnFailureListener {
    override fun onFailure(exception: Exception) {
        val errorCode = (exception as StorageException).errorCode
        val errorMessage = exception.message
        // test the errorCode and errorMessage, and handle accordingly
    }
}

Java

class MyFailureListener implements OnFailureListener {
    @Override
    public void onFailure(@NonNull Exception exception) {
        int errorCode = ((StorageException) exception).getErrorCode();
        String errorMessage = exception.getMessage();
        // test the errorCode and errorMessage, and handle accordingly
    }
}

Se você verificou a mensagem de erro e possui regras de segurança de armazenamento em nuvem que permitem sua ação, mas ainda está lutando para corrigir o erro, visite nossa página de suporte e diga-nos como podemos ajudar.

Lidar com mensagens de erro

Existem vários motivos pelos quais podem ocorrer erros, incluindo a inexistência do arquivo, o usuário não ter permissão para acessar o arquivo desejado ou o usuário cancelar o upload do arquivo.

Para diagnosticar adequadamente o problema e lidar com o erro, aqui está uma lista completa de todos os erros que nosso cliente irá levantar e como eles podem ocorrer. Os códigos de erro nesta tabela são definidos na classe StorageException como constantes inteiras.

Código Razão
ERROR_UNKNOWN Ocorreu um erro desconhecido.
ERROR_OBJECT_NOT_FOUND Nenhum objeto existe na referência desejada.
ERROR_BUCKET_NOT_FOUND Nenhum bucket está configurado para o Cloud Storage
ERROR_PROJECT_NOT_FOUND Nenhum projeto está configurado para o Cloud Storage
ERROR_QUOTA_EXCEEDED A cota do seu bucket do Cloud Storage foi excedida. Se você estiver no nível gratuito, atualize para um plano pago. Se você estiver em um plano pago, entre em contato com o suporte do Firebase.
ERROR_NOT_AUTHENTICATED O usuário não está autenticado. Autentique-se e tente novamente.
ERROR_NOT_AUTHORIZED O usuário não está autorizado a realizar a ação desejada, verifique suas regras para garantir que estão corretas.
ERROR_RETRY_LIMIT_EXCEEDED O limite máximo de tempo para uma operação (upload, download, exclusão, etc.) foi excedido. Tente novamente.
ERROR_INVALID_CHECKSUM O arquivo no cliente não corresponde à soma de verificação do arquivo recebido pelo servidor. Tente fazer upload novamente.
ERROR_CANCELED O usuário cancelou a operação.

Além disso, tentar chamar getReferenceFromUrl() com um URL inválido resultará no lançamento de uma IllegalArgumentException . O argumento para o método acima deve estar no formato gs://bucket/object ou https://firebasestorage.googleapis.com/v0/b/bucket/o/object?token=<TOKEN>