תחילת העבודה עם Cloud Storage בפלטפורמות של Apple

‫Cloud Storage for Firebase מאפשר להעלות ולשתף תוכן שנוצר על ידי משתמשים, כמו תמונות וסרטונים, וכך להוסיף תוכן מדיה עשירה לאפליקציות. הנתונים שלכם מאוחסנים בקטגוריה של Google Cloud Storage – פתרון לאחסון אובייקטים בקנה מידה של אקסה-בייט, עם זמינות גבוהה ויתירות גלובלית. Cloud Storage for Firebase מאפשר להעלות את הקבצים האלה בצורה מאובטחת ישירות ממכשירים ניידים ומדפדפני אינטרנט, ומתמודד בקלות עם רשתות לא יציבות.

לפני שמתחילים

  1. אם עדיין לא עשיתם זאת, הקפידו להשלים את המדריך לתחילת העבודה עם אפליקציות לפלטפורמות של Apple. זה כולל:

    • יצירת פרויקט ב-Firebase.

    • רושמים את האפליקציה לפלטפורמות של אפל בפרויקט, ומקשרים את האפליקציה ל-Firebase על ידי הוספת ספריית Firebase וקובץ התצורה של Firebase (GoogleService-Info.plist) לאפליקציה.

  2. חשוב לוודא שהפרויקט ב-Firebase נמצא בתוכנית התמחור Blaze בתשלום לפי שימוש, שנדרשת כדי להשתמש ב-Cloud Storage for Firebase. אם אתם משתמשים חדשים ב-Firebase וב-Google Cloud, בדקו אם אתם זכאים לקרדיט בשווי 300$לתקופת ניסיון בחינם.

יצירת קטגוריית ברירת מחדל ב-Cloud Storage

  1. במסוף Firebase, נכנסים אל Databases & Storage ‏ > Storage.

    אם הפרויקט שלכם עדיין לא בתוכנית התמחור Blaze בתשלום לפי שימוש, תתבקשו לשדרג את הפרויקט.

  2. לוחצים על שנתחיל?.

  3. בוחרים מיקום לקטגוריית ברירת המחדל.

  4. מגדירים את Firebase Security Rules לקטגוריית ברירת המחדל. במהלך הפיתוח, כדאי להגדיר את הכללים לגישה ציבורית.

  5. לוחצים על סיום.

עכשיו אפשר לראות את הקטגוריה במסוף Firebase (עוברים אל הכרטיסייה Databases & Storage > Storage > Files). הפורמט של שם הקטגוריה שמוגדר כברירת מחדל הוא 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 של Firebase לפלטפורמות של אפל:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. בוחרים את הספרייה Cloud Storage.
  5. מוסיפים את הדגל -ObjC לקטע Other Linker Flags (דגלים אחרים של מקשרים) בהגדרות ה-build של היעד.
  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 ב-method‏ 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. צריך גם להשבית את ה-swizzling של ה-app delegate. מידע נוסף זמין בהוראות של 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

הגדרה מתקדמת

יש כמה תרחישים לדוגמה שבהם נדרשת הגדרה נוספת:

התרחיש הראשון מתאים אם יש לכם משתמשים ברחבי העולם ואתם רוצים לאחסן את הנתונים שלהם קרוב אליהם. לדוגמה, אתם יכולים ליצור קטגוריות בארה"ב, באירופה ובאסיה כדי לאחסן נתונים של משתמשים באזורים האלה, וכך לצמצם את זמן האחזור.

התרחיש השני שימושי אם יש לכם נתונים עם דפוסי גישה שונים. לדוגמה: אתם יכולים להגדיר קטגוריה אזורית או קטגוריה במספר אזורים לאחסון תמונות או תוכן אחר שהגישה אליו תכופה, וקטגוריה מסוג Nearline או Coldline לאחסון גיבויים של משתמשים או תוכן אחר שהגישה אליו לא תכופה.

בשני התרחישים האלה, כדאי להשתמש בכמה קטגוריות של 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"];
    

השלבים הבאים