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

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

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

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

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

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

  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 מוגבלת, כך שרק משתמשים מאומתים יכולים לקרוא או לכתוב נתונים. כדי להתחיל בלי להגדיר אימות ב-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) בבסיס הקוד של האפליקציה, כך שהוא יכלול את השם של קטגוריית ברירת המחדל של 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

הגדרה מתקדמת

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

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

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

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

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

שימוש בכמה קטגוריות של 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);

השלבים הבאים