תחילת השימוש ב-Cloud Storage ב-Flutter

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

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

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

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

    • התקנה והפעלה של Firebase SDK ל-Flutter.

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. כדי להתקין את הפלאגין, מריצים את הפקודה הבאה מהרמה הבסיסית (root) של פרויקט Flutter:

    flutter pub add firebase_storage
    
  2. בסיום, יוצרים מחדש את אפליקציית Flutter:

    flutter run
    
  3. מייבאים את הפלאגין בקוד Dart:

    import 'package:firebase_storage/firebase_storage.dart';
    

הגדרת Cloud Storage

  1. מריצים את flutterfire configure מהספרייה של פרויקט Flutter. הפעולה הזו תעדכן את קובץ התצורה של Firebase (firebase_options.dart) ב-codebase של האפליקציה, כך שיהיה לו את השם של קטגוריית ברירת המחדל Cloud Storage.

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

    final storage = FirebaseStorage.instance;
    
    // Alternatively, explicitly specify the bucket name URL.
    // final storage = FirebaseStorage.instanceFor(bucket: "gs://<var>BUCKET_NAME</var>");
    

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

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

הגדרה מתקדמת

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

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

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

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

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

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

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

// Get a non-default Storage bucket
final storage = FirebaseStorage.instanceFor(bucket: "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 שאותחלה באמצעות אותה אפליקציה:

// Use a non-default App
final storage = FirebaseStorage.instanceFor(app: customApp);

השלבים הבאים