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

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

قبل البدء

  1. إذا لم يسبق لك ذلك، تأكَّد من إكمال دليل البدء لتطبيقات Flutter. ويشمل ذلك ما يلي:

    • إنشاء مشروع Firebase

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

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

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

  1. في وحدة تحكّم Firebase، انتقِل إلى قواعد البيانات ومساحة التخزين > مساحة التخزين.

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

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

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

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

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

يمكنك الآن عرض الحزمة في وحدة تحكّم Firebase (انتقِل إلى علامة التبويب قواعد البيانات ومساحة التخزين > مساحة التخزين > الملفات). تنسيق اسم الحزمة التلقائي هو PROJECT_ID.firebasestorage.app.

إعداد إمكانية الوصول العلني

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

يؤدي ذلك إلى إتاحة 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

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

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

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

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

في أي من حالتي الاستخدام هاتين، عليك استخدام حِزم 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 المضمّنة في حزمة تطوير البرامج (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 تم إعداده باستخدام هذا التطبيق:

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

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