بدء استخدام Cloud Storage على نظام Android

يتيح لك Cloud Storage for Firebase تحميل المحتوى من إنشاء المستخدمين ومشاركته، مثل الصور والفيديوهات، ما يتيح لك إنشاء محتوى وسائط غنية في تطبيقاتك. يتم تخزين بياناتك في حزمة Google Cloud Storage، وهي عبارة عن حلّ لتخزين العناصر بحجم إكسبايت، وتتميّز بمدى توفّر مرتفع ومعدّل تكرار عالمي. يتيح لك Cloud Storage for Firebase تحميل هذه الملفات بأمان مباشرةً من الأجهزة الجوّالة ومتصفّحات الويب، ما يتيح لك التعامل مع الشبكات غير المتقطعة بسهولة.

المتطلّبات الأساسية

أضِف Firebase إلى مشروع Android الخاص بك، إذا لم يسبق لك إجراء ذلك.

إنشاء حزمة تلقائية في Cloud Storage

  1. من مساحة الروابط في وحدة تحكُّم Firebase، اختَر مساحة التخزين، ثم انقر على البدء.

  2. راجِع الرسالة حول تأمين بيانات Cloud Storage باستخدام قواعد الأمان. أثناء تطوير التطبيق، يمكنك إعداد قواعدك المتعلقة بالوصول العام.

  3. اختَر موقعًا جغرافيًا لحزمة Cloud Storage التلقائية لديك.

    • إنّ إعداد الموقع الجغرافي هذا هو الموقع الجغرافي التلقائي لمورد Google Cloud Platform (GCP) لمشروعك. يُرجى ملاحظة أنّه سيتم استخدام هذا الموقع الجغرافي لخدمات Google Cloud Platform في مشروعك والتي تتطلّب إعدادًا للموقع الجغرافي، لا سيّما قاعدة بيانات Cloud Firestore وتطبيق App Engine (وهو مطلوب في حال استخدام Cloud Scheduler).

    • إذا لم تتمكّن من اختيار موقع جغرافي، يعني هذا أنّ مشروعك يتضمّن موقعًا جغرافيًا تلقائيًا لمورد GCP. وقد تم تعيينه إما أثناء إنشاء المشروع أو عند إعداد خدمة أخرى تتطلب إعدادًا للموقع.

    إذا كنت تستخدم خطة Blaze، يمكنك إنشاء عدّة حِزم لكل منها موقعها الجغرافي الخاص.

  4. انقر على تم.

إعداد الوصول العام

توفّر خدمة Cloud Storage for Firebase لغة قواعد بيانية تسمح لك بتحديد الطريقة التي يجب تنظيم بياناتك بها، وكيفية فهرستها، والوقت الذي يمكن فيه قراءة البيانات والكتابة إليها. يتم تلقائيًا فرض قيود على إمكانية الوصول للقراءة والكتابة في Cloud Storage، بحيث يمكن فقط للمستخدمين الذين تمت مصادقتهم قراءة البيانات أو كتابتها. للبدء بدون إعداد المصادقة، يمكنك ضبط قواعدك لإتاحة الوصول للجميع.

وسيؤدي ذلك إلى إتاحة Cloud Storage للجميع، حتى الأشخاص الذين لا يستخدمون تطبيقك، لذا احرص على تقييد خدمة Cloud Storage مرة أخرى عند إعداد المصادقة.

إضافة حزمة تطوير البرامج (SDK) لخدمة Cloud Storage إلى تطبيقك

في ملف Gradle للوحدة (على مستوى التطبيق) (عادةً <project>/<app-module>/build.gradle.kts أو <project>/<app-module>/build.gradle)، أضِف الاعتمادية لمكتبة Cloud Storage لنظام التشغيل Android. ننصحك باستخدام برنامج Firebase Android BoM للتحكّم في إصدارات المكتبة.

dependencies {
    // Import the BoM for the Firebase platform
    implementation(platform("com.google.firebase:firebase-bom:33.1.0"))

    // Add the dependency for the Cloud Storage library
    // When using the BoM, you don't specify versions in Firebase library dependencies
    implementation("com.google.firebase:firebase-storage")
}

باستخدام إطار عمل Android BoM، سيستخدم تطبيقك دائمًا إصدارات متوافقة من مكتبات Android في Firebase.

(بديل) أضِف تبعيات مكتبة Firebase بدون استخدام قائمة BoM.

إذا اختَرت عدم استخدام قائمة مشروعات Firebase، يجب تحديد كل إصدار من إصدارات مكتبة Firebase في سطر التبعية الخاص به.

يُرجى العلم أنّه في حال استخدام مكتبات Firebase متعددة في تطبيقك، ننصحك بشدة باستخدام أداة BoM لإدارة إصدارات المكتبة، ما يضمن توافق جميع الإصدارات.

dependencies {
    // Add the dependency for the Cloud Storage library
    // When NOT using the BoM, you must specify versions in Firebase library dependencies
    implementation("com.google.firebase:firebase-storage:21.0.0")
}
هل تبحث عن وحدة مكتبة خاصة بلغة Kotlin؟ اعتبارًا من تشرين الأول (أكتوبر) 2023 ( Firebase BoM 32.5.0)، أصبح بإمكان مطوّري لغتَي Kotlin وJava الاعتماد على وحدة المكتبة الرئيسية (لمعرفة التفاصيل، يُرجى الاطّلاع على الأسئلة الشائعة حول هذه المبادرة).

إعداد Cloud Storage

الخطوة الأولى للوصول إلى حزمة Cloud Storage هي إنشاء مثيل FirebaseStorage:

Kotlin+KTX

storage = Firebase.storage

Java

FirebaseStorage storage = FirebaseStorage.getInstance();

ويمكنك الآن بدء استخدام Cloud Storage.

لنتعرّف أولاً على كيفية إنشاء مرجع Cloud Storage.

الإعداد المتقدّم

في ما يلي بعض حالات الاستخدام التي تتطلب إعدادًا إضافيًا:

تُعد حالة الاستخدام الأولى مثالية إذا كان لديك مستخدمون في جميع أنحاء العالم، وتريد تخزين بياناتهم بالقرب منهم. على سبيل المثال، يمكنك إنشاء مجموعات بيانات في الولايات المتحدة وأوروبا وآسيا لتخزين بيانات المستخدمين في تلك المناطق لتقليل وقت الاستجابة.

تُعد حالة الاستخدام الثانية مفيدة إذا كانت لديك بيانات ذات أنماط وصول مختلفة. على سبيل المثال: يمكنك إعداد حزمة متعددة المناطق أو إقليمية تخزِّن الصور أو المحتوى الآخر الذي يتم الوصول إليه بشكل متكرّر، وحزمة بيانات قريبة من الخط أو على الخط البارد تخزن نسخًا احتياطية للمستخدمين أو محتوى آخر نادرًا ما يتم الوصول إليه.

في كلتا الحالتين، ستحتاج إلى استخدام حِزم Cloud Storage متعدّدة.

تُعد حالة الاستخدام الثالثة مفيدة إذا كنت تنشئ تطبيقًا، مثل Google Drive، والذي يتيح للمستخدمين امتلاك حسابات متعددة لتسجيل الدخول (على سبيل المثال، حساب شخصي وحساب عمل). يمكنك استخدام تطبيق Firebase مخصّص لمصادقة كل حساب إضافي.

استخدام حِزم Cloud Storage المتعددة

إذا أردت استخدام حزمة Cloud Storage غير الحزمة التلقائية أعلاه، أو استخدام عدة حِزم Cloud Storage في تطبيق واحد، يمكنك إنشاء مثيل من FirebaseStorage يشير إلى الحزمة المخصّصة:

Kotlin+KTX

// Get a non-default Storage bucket
val storage = Firebase.storage("gs://my-custom-bucket")

Java

// Get a non-default Storage bucket
FirebaseStorage storage = FirebaseStorage.getInstance("gs://my-custom-bucket");

التعامل مع الحِزم التي تم استيرادها

عند استيراد حزمة حالية على Cloud Storage إلى Firebase، عليك منح Firebase إمكانية الوصول إلى هذه الملفات باستخدام أداة gsutil المضمّنة في حزمة تطوير البرامج (SDK) لخدمة Google Cloud:

gsutil -m acl ch -r -u service-<project number>@gcp-sa-firebasestorage.iam.gserviceaccount.com gs://<your-cloud-storage-bucket>

يمكنك العثور على رقم مشروعك كما هو موضّح في مقدمة عن مشاريع Firebase.

ولا يؤثر ذلك في الحِزم التي تم إنشاؤها حديثًا، إذ إنّها تحتوي على عنصر التحكّم التلقائي في الوصول إلى البيانات للسماح بمنصّة Firebase. هذا إجراء مؤقت، وسيتم تنفيذه تلقائيًا في المستقبل.

استخدام تطبيق Firebase مخصّص

إذا كنت تنشئ تطبيقًا أكثر تعقيدًا باستخدام FirebaseApp مخصّص، يمكنك إنشاء مثيل FirebaseStorage تم إعداده باستخدام هذا التطبيق:

Kotlin+KTX

// Get the default bucket from a custom FirebaseApp
val storage = Firebase.storage(customApp!!)

// Get a non-default bucket from a custom FirebaseApp
val customStorage = Firebase.storage(customApp, "gs://my-custom-bucket")

Java

// Get the default bucket from a custom FirebaseApp
FirebaseStorage storage = FirebaseStorage.getInstance(customApp);

// Get a non-default bucket from a custom FirebaseApp
FirebaseStorage customStorage = FirebaseStorage.getInstance(customApp, "gs://my-custom-bucket");

الخطوات اللاحقة