معالجة الأخطاء في Cloud Storage على Android

في بعض الأحيان لا تسير الأمور كما هو مخطط لها ويحدث خطأ ما.

إذا كانت لديك شكوك، تحقَّق من الخطأ الذي تم إرجاعه واطّلِع على نص رسالة الخطأ. يعرض الرمز التالي تنفيذ معالج أخطاء مخصّص يفحص رمز الخطأ ورسالة الخطأ التي يعرضها Cloud Storage. هذا الخطأ يمكن إضافة المعالِجات إلى عناصر مختلفة مستخدَمة في Cloud Storage API (مثل مثل UploadTask و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
    }
}

إذا تحققت من رسالة الخطأ وكان لديك 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. إذا كنت مشتركًا في الفئة بدون تكلفة، عليك الترقية إلى خطة مدفوعة. إذا كنت مشتركًا في خطة مدفوعة، يُرجى التواصل مع فريق دعم Firebase.
ERROR_NOT_AUTHENTICATED لم تتم مصادقة المستخدم، يُرجى المصادقة وإعادة المحاولة.
ERROR_NOT_AUTHORIZED المستخدم غير مصرح له بتنفيذ الإجراء المطلوب. يُرجى مراجعة القواعد للتأكد من صحتها.
ERROR_RETRY_LIMIT_EXCEEDED تم تجاوز الحد الأقصى للمدة الزمنية لعملية (تحميل أو تنزيل أو حذف أو غير ذلك). يُرجى إعادة المحاولة.
ERROR_INVALID_CHECKSUM لا يتطابق الملف على العميل مع المجموع الاختباري للملف الذي تم استلامه من خلال الخادم. يُرجى محاولة تحميل الفيديو مرة أخرى.
ERROR_CANCELED ألغى المستخدم العملية.

بالإضافة إلى ذلك، تتم محاولة الاتصال بـ getReferenceFromUrl() باستخدام عنوان URL غير صالح. سيؤدي إلى رمي IllegalArgumentException. الوسيطة إلى يجب أن تكون الطريقة أعلاه بالصيغة gs://bucket/object أو https://firebasestorage.googleapis.com/v0/b/bucket/o/object?token=<TOKEN>