رسیدگی به خطاهای Cloud Storage در Android

گاهی‌اوقات کارها طبق برنامه پیش نمی‌رود و خطایی رخ می‌دهد.

اگر شک دارید، خطای برگردانده‌شده را بررسی کنید و ببینید پیام خطا چه می‌گوید. کد زیر پیاده‌سازی کنترل‌کننده خطای سفارشی را نشان می‌دهد که کد خطا و پیام خطای برگردانده‌شده توسط Cloud Storage را بررسی می‌کند. چنین کنترل‌کننده‌های خطایی را می‌توان به اشیاء مختلفی که در Cloud Storage API استفاده می‌شوند (برای مثال، UploadTask و FileDownloadTask) اضافه کرد.

Kotlin

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
    }
}

اگر پیام خطا را بررسی کرده‌اید و Cloud Storage Security Rules دارید که به شما اجازه می‌دهد اقدام کنید، اما هنوز برای رفع خطا مشکل دارید، به صفحه پشتیبانی ما مراجعه کنید و به ما اطلاع دهید که چگونه می‌توانیم کمک کنیم.

رسیدگی به پیام‌های خطا

دلایل متعددی برای بروز خطا وجود دارد، ازجمله عدم وجود فایل، نداشتن اجازه دسترسی کاربر به فایل موردنظر، یا لغو بارگذاری فایل توسط کاربر.

برای تشخیص درست مشکل و رسیدگی به خطا، در اینجا فهرست کاملی از همه خطاهایی که کارخواه ما ایجاد می‌کند و نحوه وقوع آن‌ها ارائه شده است. کدهای خطا در این جدول در کلاس StorageException به‌عنوان ثابت‌های عدد صحیح تعریف شده‌اند.

کد دلیل
ERROR_UNKNOWN خطای ناشناخته‌ای روی داد.
ERROR_OBJECT_NOT_FOUND هیچ شیء‌ای در مرجع مشخص‌شده وجود ندارد.
ERROR_BUCKET_NOT_FOUND هیچ دسته‌ای برای Cloud Storage پیکربندی نشده است
ERROR_PROJECT_NOT_FOUND هیچ پروژه‌ای برای Cloud Storage پیکربندی نشده است
ERROR_QUOTA_EXCEEDED سهمیه در دسته شما از حد مجاز فراتر رفته است. Cloud Storage for Firebase به طرح قیمت‌گذاری Blaze پرداخت به اندازه استفاده نیاز دارد. اگر این خطا را در پروژه طرح قیمت‌گذاری Spark دریافت می‌کنید، برای دسترسی مجدد باید به طرح قیمت‌گذاری Blaze ارتقا دهید. برای جزئیات، پرسشگان ما را ببینید.
ERROR_NOT_AUTHENTICATED کاربر اصالت‌سنجی نشده است، لطفاً اصالت‌سنجی کنید و دوباره امتحان کنید.
ERROR_NOT_AUTHORIZED کاربر برای انجام کنش درخواست‌شده مجاز نیست، قوانینتان را بررسی کنید تا مطمئن شوید درست هستند.
ERROR_RETRY_LIMIT_EXCEEDED از حداکثر محدودیت زمانی برای یک عملیات (بارگذاری، بارگیری، حذف، و غیره) فراتر رفته‌اید. دوباره امتحان کنید.
ERROR_INVALID_CHECKSUM فایل موجود در کارخواه با جمع‌آزمای فایل دریافتی توسط سرور مطابقت ندارد. دوباره بارگذاری کنید.
ERROR_CANCELED کاربر عملیات را لغو کرد.

علاوه‌براین، تلاش برای فراخوانی getReferenceFromUrl() با نشانی وب نامعتبر منجر به ایجاد IllegalArgumentException می‌شود. آرگومان روش بالا باید به‌صورت gs://bucket/object یا https://firebasestorage.googleapis.com/v0/b/bucket/o/object?token=<TOKEN> باشد