بدء استخدام Cloud Storage على منصات Apple

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

قبل البدء

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

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

    • تسجيل تطبيقك على منصات Apple في المشروع، وربط تطبيقك بمنصة Firebase من خلال إضافة مكتبة Firebase وملف إعداد Firebase (GoogleService-Info.plist) إلى تطبيقك.

  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.

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

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

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

إضافة Cloud Storage إلى تطبيقك

استخدِم أداة Swift Package Manager لتثبيت تبعيات Firebase وإدارتها.

  1. في Xcode، افتح مشروع تطبيقك، ثم انتقِل إلى ملف > إضافة حِزم (File > Add Packages).
  2. عندما يُطلب منك ذلك، أضِف مستودع حزمة تطوير البرامج (SDK) لمنصات Apple في Firebase:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. اختَر مكتبة "Cloud Storage".
  5. أضِف العلامة -ObjC إلى قسم علامات الربط الأخرى (Other Linker Flags) في إعدادات الإنشاء الخاصة بالهدف.
  6. بعد الانتهاء، سيبدأ Xcode تلقائيًا في حلّ التبعيات وتنزيلها في الخلفية.

إعداد Cloud Storage في تطبيقك

  1. يجب إعداد Firebase قبل إنشاء أي مرجع Firebase أو استخدامه.

    قد تكون نفّذت هذه الخطوة إذا سبق لك إعداد منتج آخر من Firebase، ولكن عليك التأكّد من إضافة مكتبة FirebaseStorage إلى قائمة عمليات الاستيراد.

    1. استورِد وحدة FirebaseCore ووحدة FirebaseStorage في UIApplicationDelegate. ننصحك أيضًا بإضافة FirebaseAuth.

      SwiftUI

      import SwiftUI
      import FirebaseCore
      import FirebaseStorage
      import FirebaseAuth
      // ...
      

      Swift

      import FirebaseCore
      import FirebaseStorage
      import FirebaseAuth
      // ...
      

      Objective-C

      @import FirebaseCore;
      @import FirebaseStorage;
      @import FirebaseAuth;
      // ...
      
    2. اضبط مثيلاً مشتركًا من النوع FirebaseApp في طريقة application(_:didFinishLaunchingWithOptions:) لمفوَّض تطبيقك:

      SwiftUI

      // Use Firebase library to configure APIs
      FirebaseApp.configure()
      

      Swift

      // Use Firebase library to configure APIs
      FirebaseApp.configure()
      

      Objective-C

      // Use Firebase library to configure APIs
      [FIRApp configure];
      
    3. (SwiftUI فقط) أنشئ مفوَّضًا للتطبيق وأرفِقه ببنية App باستخدام UIApplicationDelegateAdaptor أو NSApplicationDelegateAdaptor. يجب أيضًا إيقاف ميزة "تبديل مفوّض التطبيق" (app delegate swizzling). لمزيد من المعلومات، يُرجى الاطّلاع على تعليمات SwiftUI.

      SwiftUI

      @main
      struct YourApp: App {
        // Register app delegate for Firebase setup
        @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
      
        var body: some Scene {
          WindowGroup {
            NavigationView {
              ContentView()
            }
          }
        }
      }
      
  2. يمكنك الحصول على مرجع لخدمة Cloud Storage باستخدام تطبيق Firebase التلقائي.

    1. تأكَّد من تعديل ملف إعداد Firebase (GoogleService-Info.plist) في قاعدة الرموز البرمجية لتطبيقك باسم حزمة Cloud Storage التلقائية.

      1. احصل على ملف الإعداد المعدَّل.

      2. استخدِم ملف الإعداد الذي تم تنزيله لاستبدال ملف GoogleService-Info.plist الحالي في جذر مشروع Xcode. إذا طُلب منك ذلك، اختَر إضافة ملف الإعداد إلى جميع الأهداف.

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

    2. احصل على مرجع لخدمة Cloud Storage باستخدام تطبيق Firebase التلقائي:

      Swift

      let storage = Storage.storage()
      // Alternatively, explicitly specify the bucket name URL.
      storage = Storage.storage(url:"gs://BUCKET_NAME")

      Objective-C

      FIRStorage *storage = [FIRStorage storage];
      // Alternatively, explicitly specify the bucket name URL.
      // FIRStorage storage = [FIRStorage storageWithURL:@"gs://BUCKET_NAME"];

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

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

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

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

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

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

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

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

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

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

Swift

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

Objective-C

// Get a non-default Cloud Storage bucket
FIRStorage storage = [FIRStorage storageWithURL:@"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://BUCKET_NAME

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

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

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

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

Swift

// Get the default bucket from a custom FirebaseApp
storage = Storage.storage(app:customApp)

// Get a non-default bucket from a custom FirebaseApp
storage = Storage.storage(app:customApp, url:"gs://my-custom-bucket")
    

Objective-C

// Get the default bucket from a custom FIRApp
FIRStorage storage = [FIRStorage storageForApp:customApp];

// Get a non-default bucket from a custom FIRApp
FIRStorage storage = [FIRStorage storageForApp:customApp withURL:@"gs://my-custom-bucket"];
    

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