เริ่มต้นใช้งาน Cloud Storage บนแพลตฟอร์ม Apple

Cloud Storage for Firebase ช่วยให้คุณอัปโหลดและแชร์เนื้อหาที่ผู้ใช้สร้างขึ้น เช่น รูปภาพและวิดีโอ ซึ่งช่วยให้คุณสร้างเนื้อหาริชมีเดียลงในแอปได้ ระบบจะจัดเก็บข้อมูลของคุณไว้ในบัคเก็ต Google Cloud Storage ซึ่งเป็นโซลูชันพื้นที่เก็บข้อมูลออบเจ็กต์ขนาด เอ็กซะไบต์ที่มีความพร้อมใช้งานสูงและความซ้ำซ้อน ทั่วโลก Cloud Storage for Firebase ช่วยให้คุณอัปโหลดไฟล์เหล่านี้ จากอุปกรณ์เคลื่อนที่และเว็บเบราว์เซอร์ได้อย่างปลอดภัย และจัดการเครือข่ายที่ไม่เสถียรได้อย่าง ง่ายดาย

ก่อนเริ่มต้น

  1. ตรวจสอบว่าคุณได้ทำตาม คู่มือเริ่มต้นใช้งานสำหรับแอปแพลตฟอร์ม Apple แล้ว หากยังไม่ได้ทำ ซึ่งรวมถึงแหล่งข้อมูลต่อไปนี้

    • การสร้างโปรเจ็กต์ Firebase

    • การลงทะเบียนแอปแพลตฟอร์ม Apple กับโปรเจ็กต์ และเชื่อมต่อแอปกับ Firebase โดยการเพิ่มไลบรารี Firebase และไฟล์การกำหนดค่า Firebase (GoogleService-Info.plist) ลงในแอป

  2. ตรวจสอบว่าโปรเจ็กต์ Firebase ของคุณใช้แพ็กเกจราคา Blaze แบบจ่ายเมื่อใช้ ซึ่งเป็นข้อกำหนดที่เริ่มมีผลในเดือนตุลาคม 2024 (ดูคำถามที่พบบ่อย) หากคุณเพิ่งเริ่มใช้ Firebase และ Google Cloud ให้ตรวจสอบว่าคุณมีสิทธิ์รับ เครดิต$300 หรือไม่

สร้างบัคเก็ตเริ่มต้นCloud Storage

  1. ในคอนโซลFirebase ให้ไปที่ฐานข้อมูลและพื้นที่เก็บข้อมูล > พื้นที่เก็บข้อมูล

    หากโปรเจ็กต์ของคุณยังไม่ได้ใช้แพ็กเกจราคา Blaze แบบจ่ายเมื่อใช้ ระบบจะแจ้งให้คุณอัปเกรดโปรเจ็กต์

  2. คลิกเริ่มต้นใช้งาน

  3. เลือกสถานที่ตั้งสำหรับบัคเก็ตเริ่มต้น

  4. กำหนดค่า Firebase Security Rules สำหรับบัคเก็ตเริ่มต้น ระหว่างการพัฒนา ให้พิจารณา ตั้งค่ากฎสำหรับการเข้าถึงแบบสาธารณะ

  5. คลิกเสร็จสิ้น

ตอนนี้คุณสามารถดูบัคเก็ตในคอนโซล Firebase ได้แล้ว (ไปที่แท็บ ฐานข้อมูลและพื้นที่เก็บข้อมูล > พื้นที่เก็บข้อมูล > ไฟล์) รูปแบบชื่อบัคเก็ตเริ่มต้นคือ PROJECT_ID.firebasestorage.app

ตั้งค่าการเข้าถึงแบบสาธารณะ

Cloud Storage for Firebase มีภาษาของกฎที่ประกาศไว้ซึ่งช่วยให้คุณ กำหนดวิธีจัดโครงสร้างข้อมูล วิธีจัดทำดัชนี และเวลาที่ สามารถอ่านและเขียนข้อมูลได้ โดยค่าเริ่มต้น ระบบจะจำกัดสิทธิ์อ่านและเขียนไปยัง Cloud Storage เพื่อให้เฉพาะผู้ใช้ที่ผ่านการตรวจสอบสิทธิ์เท่านั้นที่อ่านหรือเขียน ข้อมูลได้ หากต้องการเริ่มต้นใช้งานโดยไม่ต้องตั้งค่า Authentication คุณสามารถ กำหนดค่ากฎสำหรับการเข้าถึงแบบสาธารณะได้

การดำเนินการนี้จะทำให้ Cloud Storage เปิดให้ทุกคนเข้าถึงได้ แม้แต่ผู้ที่ไม่ได้ใช้ แอปของคุณ ดังนั้นโปรดอย่าลืมจำกัด Cloud Storage อีกครั้งเมื่อตั้งค่า การตรวจสอบสิทธิ์

เพิ่ม Cloud Storage ลงในแอป

ใช้ Swift Package Manager เพื่อติดตั้งและจัดการทรัพยากร Dependency ของ Firebase

  1. เปิดโปรเจ็กต์แอปใน Xcode แล้วไปที่ไฟล์ > เพิ่มแพ็กเกจ
  2. เมื่อได้รับข้อความแจ้ง ให้เพิ่มที่เก็บ Firebase Apple Platforms SDK ดังนี้
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. เลือกไลบรารี Cloud Storage
  5. เพิ่มแฟล็ก -ObjC ลงในส่วน Other Linker Flags ของการตั้งค่าบิลด์ของเป้าหมาย
  6. เมื่อเสร็จแล้ว Xcode จะเริ่มจับคู่ข้อมูลและดาวน์โหลด ทรัพยากร Dependency ในเบื้องหลังโดยอัตโนมัติ

ตั้งค่า Cloud Storage ในแอป

  1. เริ่มต้น Firebase ก่อนที่จะสร้างหรือใช้การอ้างอิง Firebase

    คุณอาจดำเนินการนี้ไปแล้วหากตั้งค่าผลิตภัณฑ์ Firebase อื่นไว้ แต่ต้องตรวจสอบว่าได้เพิ่มไลบรารี FirebaseStorage ลงในรายการการนำเข้าแล้ว

    1. นำเข้าโมดูล FirebaseCore และโมดูล FirebaseStorage ใน UIApplicationDelegate นอกจากนี้ เรายังแนะนำให้เพิ่ม FirebaseAuth ด้วย

      SwiftUI

      import SwiftUI
      import FirebaseCore
      import FirebaseStorage
      import FirebaseAuth
      // ...
      

      Swift

      import FirebaseCore
      import FirebaseStorage
      import FirebaseAuth
      // ...
      

      Objective-C

      @import FirebaseCore;
      @import FirebaseStorage;
      @import FirebaseAuth;
      // ...
      
    2. กำหนดค่าอินสแตนซ์ที่แชร์ในเมธอดของผู้รับมอบสิทธิ์แอป:FirebaseAppapplication(_:didFinishLaunchingWithOptions:)

      SwiftUI

      // Use Firebase library to configure APIs
      FirebaseApp.configure()
      

      Swift

      // Use Firebase library to configure APIs
      FirebaseApp.configure()
      

      Objective-C

      // Use Firebase library to configure APIs
      [FIRApp configure];
      
    3. (SwiftUI เท่านั้น) สร้างผู้รับมอบสิทธิ์แอปพลิเคชันและแนบกับโครงสร้าง App โดยใช้ UIApplicationDelegateAdaptor หรือ NSApplicationDelegateAdaptor นอกจากนี้ คุณต้องปิดใช้การสลับผู้รับมอบสิทธิ์แอปด้วย ดูข้อมูลเพิ่มเติมได้ใน วิธีการ SwiftUI

      SwiftUI

      @main
      struct YourApp: App {
        // Register app delegate for Firebase setup
        @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
      
        var body: some Scene {
          WindowGroup {
            NavigationView {
              ContentView()
            }
          }
        }
      }
      
  2. รับการอ้างอิงไปยังบริการ Cloud Storage โดยใช้แอป Firebase เริ่มต้น

    1. ตรวจสอบว่าไฟล์การกำหนดค่า Firebase (GoogleService-Info.plist) ในฐานของโค้ดของ แอปได้รับการอัปเดตด้วยชื่อบัคเก็ตCloud Storage เริ่มต้นแล้ว

      1. รับไฟล์การกำหนดค่าที่อัปเดตแล้ว

      2. ใช้ไฟล์การกำหนดค่าที่ดาวน์โหลดนี้เพื่อ แทนที่ ไฟล์ GoogleService-Info.plist ที่มีอยู่ในรูทของโปรเจ็กต์ Xcode หากได้รับข้อความแจ้ง ให้เลือกเพิ่มไฟล์การกำหนดค่าลงในเป้าหมายทั้งหมด

        ตรวจสอบว่าคุณมีเฉพาะไฟล์การกำหนดค่าที่ดาวน์โหลดล่าสุดนี้ในแอป และชื่อไฟล์ไม่มีอักขระเพิ่มเติมต่อท้าย เช่น (2)

    2. รับการอ้างอิงไปยังบริการ Cloud Storage โดยใช้แอป Firebase เริ่มต้น ดังนี้

      Swift

      let storage = Storage.storage()
      // Alternatively, explicitly specify the bucket name URL.
      storage = Storage.storage(url:"gs://BUCKET_NAME")

      Objective-C

      FIRStorage *storage = [FIRStorage storage];
      // Alternatively, explicitly specify the bucket name URL.
      // FIRStorage storage = [FIRStorage storageWithURL:@"gs://BUCKET_NAME"];

คุณพร้อมที่จะเริ่มใช้ Cloud Storage แล้ว

ขั้นตอนถัดไป ดูวิธีสร้างการอ้างอิง Cloud Storage

การตั้งค่าขั้นสูง

มีกรณีการใช้งานบางกรณีที่ต้องมีการตั้งค่าเพิ่มเติม ดังนี้

กรณีการใช้งานแรกเหมาะอย่างยิ่งหากคุณมีผู้ใช้ทั่วโลกและต้องการจัดเก็บข้อมูลของผู้ใช้ไว้ใกล้กับผู้ใช้ ตัวอย่างเช่น คุณสามารถสร้าง Bucket ในสหรัฐอเมริกา ยุโรป และเอเชียเพื่อจัดเก็บข้อมูลสำหรับผู้ใช้ในภูมิภาคเหล่านั้นเพื่อลดเวลาในการตอบสนอง

กรณีการใช้งานที่ 2 มีประโยชน์หากคุณมีข้อมูลที่มีรูปแบบการเข้าถึงที่แตกต่างกัน ตัวอย่างเช่น คุณสามารถตั้งค่า Bucket แบบหลายภูมิภาคหรือภูมิภาคเดียวที่จัดเก็บรูปภาพหรือเนื้อหาอื่นๆ ที่มีการเข้าถึงบ่อย และ Bucket Nearline หรือ Coldline ที่จัดเก็บข้อมูลสำรองของผู้ใช้หรือเนื้อหาอื่นๆ ที่มีการเข้าถึงไม่บ่อย

ในกรณีการใช้งานเหล่านี้ คุณจะต้องใช้ บัคเก็ตCloud Storageหลายรายการ

กรณีการใช้งานที่ 3 มีประโยชน์หากคุณกำลังสร้างแอป เช่น Google ไดรฟ์ ซึ่งอนุญาตให้ผู้ใช้มีบัญชีที่เข้าสู่ระบบหลายบัญชี (เช่น บัญชีส่วนตัวและบัญชีงาน) คุณสามารถใช้อินสแตนซ์แอป Firebase ที่กำหนดเอง เพื่อตรวจสอบสิทธิ์บัญชีเพิ่มเติมแต่ละบัญชี

ใช้บัคเก็ตหลายรายการCloud Storage

หากต้องการใช้บัคเก็ต Cloud Storage อื่นนอกเหนือจากบัคเก็ตเริ่มต้นที่ระบุไว้ข้างต้น หรือใช้บัคเก็ต Cloud Storage หลายรายการในแอปเดียว คุณสามารถสร้างอินสแตนซ์ FIRStorage ที่อ้างอิงบัคเก็ตที่กำหนดเองได้ ดังนี้

Swift

// Get a non-default Cloud Storage bucket
storage = Storage.storage(url:"gs://my-custom-bucket")
    

Objective-C

// Get a non-default Cloud Storage bucket
FIRStorage storage = [FIRStorage storageWithURL:@"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 ที่กำหนดเอง คุณสามารถสร้างอินสแตนซ์ Storage ที่เริ่มต้นด้วยแอปดังกล่าวได้ ดังนี้

Swift

// Get the default bucket from a custom FirebaseApp
storage = Storage.storage(app:customApp)

// Get a non-default bucket from a custom FirebaseApp
storage = Storage.storage(app:customApp, url:"gs://my-custom-bucket")
    

Objective-C

// Get the default bucket from a custom FIRApp
FIRStorage storage = [FIRStorage storageForApp:customApp];

// Get a non-default bucket from a custom FIRApp
FIRStorage storage = [FIRStorage storageForApp:customApp withURL:@"gs://my-custom-bucket"];
    

ขั้นตอนถัดไป