بدء استخدام Cloud Storage على Flutter

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

قبل البدء

  1. تأكَّد من إكمال قراءة دليل بدء استخدام تطبيقات Flutter، إذا لم يسبق لك ذلك. يشمل هذا النوع من المحتوى ما يلي:

    • جارٍ إنشاء مشروع على Firebase.

    • تثبيت حِزم تطوير البرامج (SDK) لمنصّة Firebase وإعدادها لاستخدامها مع Flutter

  2. تأكَّد من أنّ مشروعك على Firebase يستخدم خطة أسعار Blaze المستندة إلى الدفع حسب الاستخدام. إذا كنت مستخدمًا جديدًا لـ Firebase وGoogle Cloud، تحقق مما إذا كنت مؤهلاً للحصول على رصيد بقيمة 300 دولار أمريكي.

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

  1. من لوحة التنقّل في وحدة تحكّم Firebase، اختَر مساحة التخزين.

    إذا لم يكن مشروعك ضمن خطة تسعير Blaze بنظام الدفع حسب الاستخدام بعد، فسيُطلب منك ترقية مشروعك.

  2. انقر على البدء.

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

  4. اضبط Firebase Security Rules للحزمة التلقائية. أثناء التطوير، ننصحك بإعداد قواعد الوصول العلني.

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

يمكنك الآن عرض الحزمة في علامة التبويب Cloud Storage الملفات في وحدة تحكّم Firebase. تنسيق اسم الحزمة التلقائي هو PROJECT_ID.firebasestorage.app.

إعداد إتاحة الوصول للجميع

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

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

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

  1. من جذر مشروع Flutter، شغِّل الأمر التالي لتثبيت المكوّن الإضافي:

    flutter pub add firebase_storage
    
  2. بعد إكمال الخطوات، أعِد إنشاء تطبيق Flutter:

    flutter run
    
  3. قم باستيراد المكون الإضافي في تعليمة Dart الخاصة بك:

    import 'package:firebase_storage/firebase_storage.dart';
    

إعداد Cloud Storage

  1. شغِّل flutterfire configure من دليل مشروع Flutter. يؤدي ذلك إلى تعديل ملف إعداد Firebase (firebase_options.dart) في قاعدة رموز تطبيقك لكي يحمل اسم حزمة Cloud Storage التلقائية.

  2. يمكنك الوصول إلى حزمة Cloud Storage من خلال إنشاء مثيل لمحاولة FirebaseStorage:

    final storage = FirebaseStorage.instance;
    
    // Alternatively, explicitly specify the bucket name URL.
    // final storage = FirebaseStorage.instanceFor(bucket: "gs://<var>BUCKET_NAME</var>");
    

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

الخطوة التالية؟ تعرَّف على كيفية إنشاء مرجع Cloud Storage.

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

هناك بعض حالات الاستخدام التي تتطلّب إجراء إعدادات إضافية:

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

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

في أيّ من حالات الاستخدام هذه، عليك استخدام حِزم متعددة في Cloud Storage.

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

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

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

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

العمل مع الحِزم المستورَدة

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

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 تم إعداده باستخدام هذا التطبيق:

// Use a non-default App
final storage = FirebaseStorage.instanceFor(app: customApp);

الخطوات التالية