תחילת העבודה עם 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 כשמגדירים אימות.

הוספת Cloud Storage SDK לאפליקציה

בקובץ 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:34.0.0"))

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

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

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

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

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

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

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

    Kotlin

    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

הגדרה מתקדמת

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

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

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

בכל אחד מהתרחישים האלה, כדאי להשתמש בכמה דליים של Cloud Storage.

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

שימוש בכמה קטגוריות Cloud Storage

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

Kotlin

// 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

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

השלבים הבאים