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

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

דרישות מוקדמות

אם עדיין לא עשיתם זאת, מוסיפים את Firebase לפרויקט Android.

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

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

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

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

    • הגדרת המיקום הזו היא של הפרויקט שלך מיקום ברירת המחדל של משאב ב-Google Cloud Platform (GCP). חשוב לשים לב שהמיקום הזה ישמש לשירותי GCP בפרויקט שלך. שמצריכות הגדרת מיקום, בפרט מסד הנתונים של Cloud Firestore אפליקציית App Engine (נדרש אם משתמשים ב-Cloud Scheduler).

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

    אם את/ה בתוכנית Blaze, יש לך אפשרות ליצור מספר קטגוריות, לכל אחת מהן location.

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

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

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.4.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, האפליקציה שלכם תשתמש תמיד בגרסאות תואמות של ספריות Android של Firebase.

(חלופה) מוסיפים יחסי תלות של ספריית 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

השלב הראשון לגישה לקטגוריה Cloud Storage הוא ליצור מכונה של FirebaseStorage:

Kotlin+KTX

storage = Firebase.storage

Java

FirebaseStorage storage = FirebaseStorage.getInstance();

הכול מוכן, אפשר להתחיל להשתמש ב-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://<your-cloud-storage-bucket>

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

השלבים הבאים