Bắt đầu sử dụng Cloud Storage trên Android

Cloud Storage for Firebase cho phép bạn tải lên và chia sẻ nội dung do người dùng tạo, chẳng hạn như hình ảnh và video, cho phép bạn tạo nội dung đa phương tiện đa dạng thức trong ứng dụng. Dữ liệu của bạn được lưu trữ trong một bộ chứa Google Cloud Storage – một giải pháp lưu trữ đối tượng ở quy mô exabyte với khả năng hoạt động cao và dự phòng toàn cầu. Cloud Storage for Firebase cho phép bạn tải các tệp này lên một cách an toàn ngay từ thiết bị di động và trình duyệt web, dễ dàng xử lý các mạng không ổn định.

Trước khi bắt đầu

  1. Hãy nhớ hoàn tất hướng dẫn bắt đầu sử dụng cho ứng dụng Android (nếu bạn chưa thực hiện). Chẳng hạn như:

    • Tạo dự án Firebase.

    • Đăng ký ứng dụng Android của bạn với dự án và kết nối ứng dụng với Firebase bằng cách thêm các phần phụ thuộc Firebase, trình bổ trợ Dịch vụ Google và tệp cấu hình Firebase (google-services.json) vào ứng dụng.

  2. Đảm bảo dự án Firebase của bạn đang sử dụng gói giá linh hoạt trả theo mức sử dụng Blaze. Nếu bạn mới sử dụng Firebase và Google Cloud, hãy kiểm tra xem bạn có đủ điều kiện nhận khoản tín dụng trị giá 300 đô la hay không.

Tạo bộ chứa Cloud Storage mặc định

  1. Trong ngăn điều hướng của bảng điều khiển Firebase, hãy chọn Bộ nhớ.

    Nếu dự án của bạn chưa sử dụng gói giá linh hoạt Blaze (thanh toán theo mức sử dụng), bạn sẽ được nhắc nâng cấp dự án.

  2. Nhấp vào Bắt đầu.

  3. Chọn một vị trí cho bộ chứa mặc định.

    • Các bộ chứa trong US-CENTRAL1, US-EAST1US-WEST1 có thể tận dụng cấp"Luôn miễn phí" cho Google Cloud Storage. Các bộ chứa ở tất cả các vị trí khác tuân theo giá và mức sử dụng của Google Cloud Storage.

    • Sau này, nếu muốn, bạn có thể tạo nhiều bộ chứa, mỗi bộ chứa có một vị trí riêng.

  4. Định cấu hình Firebase Security Rules cho bộ chứa mặc định. Trong quá trình phát triển, hãy cân nhắc thiết lập quy tắc cho quyền truy cập công khai.

  5. Nhấp vào Xong.

Giờ đây, bạn có thể xem bộ chứa trong thẻ Cloud Storage Tệp của bảng điều khiển Firebase. Định dạng tên bộ chứa mặc định là PROJECT_ID.firebasestorage.app.

Thiết lập quyền truy cập công khai

Cloud Storage for Firebase cung cấp một ngôn ngữ quy tắc khai báo cho phép bạn xác định cách cấu trúc dữ liệu, cách lập chỉ mục dữ liệu và thời điểm có thể đọc và ghi dữ liệu. Theo mặc định, quyền đọc và ghi vào Cloud Storage bị hạn chế nên chỉ những người dùng đã xác thực mới có thể đọc hoặc ghi dữ liệu. Để bắt đầu mà không cần thiết lập Authentication, bạn có thể định cấu hình quy tắc cho quyền truy cập công khai.

Điều này khiến Cloud Storage mở cho mọi người, ngay cả những người không sử dụng ứng dụng của bạn, vì vậy, hãy nhớ hạn chế lại Cloud Storage khi bạn thiết lập quy trình xác thực.

Thêm SDK Cloud Storage vào ứng dụng

Trong tệp Gradle (ở cấp ứng dụng) của mô-đun (thường là <project>/<app-module>/build.gradle.kts hoặc <project>/<app-module>/build.gradle), hãy thêm phần phụ thuộc cho thư viện Cloud Storage dành cho Android. Bạn nên sử dụng Firebase Android BoM để kiểm soát việc tạo phiên bản thư viện.

dependencies {
    // Import the BoM for the Firebase platform
    implementation(platform("com.google.firebase:firebase-bom:33.6.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")
}

Bằng cách sử dụng Firebase Android BoM, ứng dụng của bạn sẽ luôn sử dụng những phiên bản tương thích của thư viện Android trên Firebase.

(Phương án thay thế)  Thêm phần phụ thuộc thư viện Firebase mà không sử dụng BoM

Nếu chọn không sử dụng Firebase BoM, bạn phải chỉ định từng phiên bản thư viện Firebase trong dòng phần phụ thuộc của thư viện đó.

Xin lưu ý rằng nếu sử dụng nhiều thư viện Firebase trong ứng dụng, bạn nên sử dụng BoM để quản lý các phiên bản thư viện, nhằm đảm bảo tất cả phiên bản đều tương thích.

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")
}
Bạn đang tìm một mô-đun thư viện dành riêng cho Kotlin? Kể từ tháng 10 năm 2023 (Firebase BoM 32.5.0), cả nhà phát triển Kotlin và Java đều có thể phụ thuộc vào mô-đun thư viện chính (để biết thông tin chi tiết, hãy xem Câu hỏi thường gặp về sáng kiến này).

Thiết lập Cloud Storage trong ứng dụng

  1. Đảm bảo tệp cấu hình Firebase (google-services.json) trong cơ sở mã của ứng dụng được cập nhật bằng tên của bộ chứa Cloud Storage mặc định.

    1. Tải tệp cấu hình đã cập nhật.

    2. Sử dụng tệp cấu hình đã tải xuống này để thay thế tệp google-services.json hiện có trong thư mục mô-đun (ở cấp ứng dụng) của ứng dụng.

      Đảm bảo rằng bạn chỉ có tệp cấu hình mới tải xuống gần đây nhất này trong ứng dụng và tên tệp không có thêm ký tự nào, chẳng hạn như (2).

  2. Truy cập vào bộ chứa Cloud Storage bằng cách tạo một thực thể của FirebaseStorage:

    Kotlin+KTX

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

Bạn đã sẵn sàng bắt đầu sử dụng Cloud Storage!

Bước tiếp theo? Tìm hiểu cách tạo tệp đối chiếu Cloud Storage.

Thiết lập nâng cao

Có một số trường hợp sử dụng cần thiết lập thêm:

Trường hợp sử dụng đầu tiên là hoàn hảo nếu bạn có người dùng trên khắp thế giới và muốn lưu trữ dữ liệu của họ ở gần họ. Ví dụ: bạn có thể tạo các bộ chứa ở Hoa Kỳ, Châu Âu và Châu Á để lưu trữ dữ liệu cho người dùng ở những khu vực đó nhằm giảm độ trễ.

Trường hợp sử dụng thứ hai sẽ hữu ích nếu bạn có dữ liệu với nhiều mẫu truy cập. Ví dụ: bạn có thể thiết lập một bộ chứa nhiều khu vực hoặc bộ chứa theo khu vực để lưu trữ ảnh hoặc nội dung thường được truy cập khác, cũng như bộ chứa gần dòng hoặc bộ chứa dòng lạnh để lưu trữ bản sao lưu của người dùng hoặc nội dung khác không được truy cập thường xuyên.

Trong cả hai trường hợp sử dụng này, bạn nên sử dụng nhiều bộ chứa Cloud Storage.

Trường hợp sử dụng thứ ba sẽ hữu ích nếu bạn đang xây dựng một ứng dụng, chẳng hạn như Google Drive, cho phép người dùng có nhiều tài khoản đã đăng nhập (ví dụ: tài khoản cá nhân và tài khoản công việc). Bạn có thể sử dụng một thực thể Ứng dụng Firebase tuỳ chỉnh để xác thực từng tài khoản bổ sung.

Sử dụng nhiều bộ chứa Cloud Storage

Nếu muốn sử dụng bộ chứa Cloud Storage khác với bộ chứa mặc định được mô tả ở phần trước trong hướng dẫn này hoặc sử dụng nhiều bộ chứa Cloud Storage trong một ứng dụng, bạn có thể tạo một thực thể của FirebaseStorage tham chiếu đến bộ chứa tuỳ chỉnh:

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

Làm việc với các bộ chứa đã nhập

Khi nhập một bộ chứa Cloud Storage hiện có vào Firebase, bạn sẽ phải cấp cho Firebase quyền truy cập vào các tệp này bằng công cụ gsutil có trong SDK Google Cloud:

gsutil -m acl ch -r -u service-PROJECT_NUMBER@gcp-sa-firebasestorage.iam.gserviceaccount.com gs://BUCKET_NAME

Bạn có thể tìm thấy số dự án của mình như mô tả trong phần giới thiệu về dự án Firebase.

Điều này không ảnh hưởng đến các bộ chứa mới tạo, vì các bộ chứa đó có chế độ kiểm soát quyền truy cập mặc định được đặt để cho phép Firebase. Đây là biện pháp tạm thời và sẽ được thực hiện tự động trong tương lai.

Sử dụng Ứng dụng Firebase tuỳ chỉnh

Nếu đang xây dựng một ứng dụng phức tạp hơn bằng FirebaseApp tuỳ chỉnh, bạn có thể tạo một thực thể của FirebaseStorage được khởi tạo bằng ứng dụng đó:

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

Các bước tiếp theo