תחילת העבודה עם Cloud Storage ב-Android

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

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

  1. אם עדיין לא עשיתם זאת, מומלץ לקרוא את מדריך למתחילים בנושא אפליקציות ל-Android. בין המקורות האלה:

    • יוצרים פרויקט Firebase.

    • רישום האפליקציה ל-Android בפרויקט וחיבור האפליקציה ל-Firebase באמצעות הוספת יחסי התלות של Firebase, הפלאגין של שירותי Google וקובץ התצורה של Firebase (google-services.json) לאפליקציה.

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

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

  1. בחלונית הניווט של מסוף Firebase, בוחרים באפשרות Storage.

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

  2. לוחצים על תחילת העבודה.

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

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

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

עכשיו אפשר לצפות בקטגוריה בכרטיסייה Cloud Storage Files במסוף Firebase. פורמט ברירת המחדל של שם הקטגוריה הוא PROJECT_ID.firebasestorage.app.

הגדרת גישה ציבורית

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

הפעולה הזו גורמת לכך ש-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.5.1"))

    // 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")
}

כשמשתמשים ב-Firebase Android BoM, האפליקציה תמיד תשתמש בגרסאות תואמות של ספריות Firebase ל-Android.

(חלופה)  מוסיפים יחסי תלות לספריות של Firebase בלי להשתמש ב-BoM

אם בוחרים לא להשתמש ב-Firebase BoM, צריך לציין את כל הגרסאות של ספריות 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.1")
}
מחפשים מודול ספרייה ספציפי ל-Kotlin? החל מ-אוקטובר 2023 (Firebase BoM 32.5.0), מפתחי Kotlin ומפתחי Java יוכלו להסתמך על מודול הספרייה הראשי (פרטים נוספים זמינים בשאלות הנפוצות לגבי היוזמה הזו).

הגדרת Cloud Storage באפליקציה

  1. מוודאים שקובץ התצורה של Firebase (google-services.json) ב-codebase של האפליקציה מעודכן עם השם של קטגוריית ברירת המחדל Cloud Storage.

    1. מקבלים את קובץ התצורה המעודכן.

    2. משתמשים בקובץ התצורה הזה כדי להחליף את קובץ google-services.json הקיים בספריית המודול (ברמת האפליקציה) של האפליקציה.

      חשוב לוודא שבאפליקציה שלכם יש רק את קובץ התצורה שהורדתם לאחרונה, ושלא נוספו תווים נוספים לשם הקובץ, כמו (2).

  2. כדי לגשת לקטגוריה Cloud Storage, יוצרים מכונה של FirebaseStorage:

    Kotlin+KTX

    storage = Firebase.storage
    // Alternatively, explicitly specify the bucket name URL.
    // val storage = Firebase.storage("gs://BUCKET_NAME")
    

    Java

    FirebaseStorage storage = FirebaseStorage.getInstance();
    // Alternatively, explicitly specify the bucket name URL.
    // FirebaseStorage storage = FirebaseStorage.getInstance("gs://BUCKET_NAME");
    

הכול מוכן, אפשר להתחיל להשתמש ב-Cloud Storage

מה השלב הבא? איך יוצרים קובץ עזר של Cloud Storage

הגדרה מתקדמת

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

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

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

בשני תרחישים לדוגמה האלה, כדאי להשתמש בכמה קטגוריות Cloud Storage.

התרחיש השלישי יכול להיות שימושי אם אתם מפתחים אפליקציה כמו Google Drive, שמאפשרת למשתמשים להיכנס לכמה חשבונות (למשל, חשבון אישי וחשבון לצורכי עבודה). אפשר להשתמש במכונה מותאמת אישית של Firebase App כדי לאמת כל חשבון נוסף.

שימוש במספר קטגוריות של 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, שנכלל ב-Google Cloud SDK:

gsutil -m acl ch -r -u service-PROJECT_NUMBER@gcp-sa-firebasestorage.iam.gserviceaccount.com gs://BUCKET_NAME

תוכלו למצוא את מספר הפרויקט כפי שמתואר במבוא לפרויקטים של 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");

השלבים הבאים