Ikuti semua informasi yang diumumkan di Firebase Summit, dan pelajari bagaimana Firebase dapat membantu Anda mempercepat pengembangan aplikasi dan menjalankan aplikasi dengan percaya diri. Pelajari Lebih Lanjut

Unduh file dengan Cloud Storage untuk Unity

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Cloud Storage for Firebase memungkinkan Anda mengunduh file dengan cepat dan mudah dari keranjang Cloud Storage yang disediakan dan dikelola oleh Firebase.

Buat Referensi

Untuk mendownload file, terlebih dahulu buat referensi Cloud Storage ke file yang ingin Anda download.

Anda dapat membuat referensi dengan menambahkan jalur turunan ke root bucket Cloud Storage, atau Anda dapat membuat referensi dari URL gs:// atau https:// yang ada yang mereferensikan objek di Cloud Storage.

// Create a reference with an initial file path and name
StorageReference pathReference =
    storage.GetReference("images/stars.jpg");

// Create a reference from a Google Cloud Storage URI
StorageReference gsReference =
    storage.GetReferenceFromUrl("gs://bucket/images/stars.jpg");

// Create a reference from an HTTPS URL
// Note that in the URL, characters are URL escaped!
StorageReference httpsReference =
    storage.GetReferenceFromUrl("https://firebasestorage.googleapis.com/b/bucket/o/images%20stars.jpg");

Unduh File

Setelah memiliki referensi, Anda dapat mengunduh file dari Cloud Storage dengan empat cara:

  1. Unduh dari URL
  2. Unduh ke array byte
  3. Unduh dengan Aliran
  4. Unduh ke file lokal

Metode yang akan Anda gunakan untuk mengambil file Anda akan tergantung pada bagaimana Anda ingin menggunakan data dalam game Anda.

Unduh dari URL

Jika Anda ingin menggunakan URL dengan Unity's WWW atau UnityWebRequest Anda bisa mendapatkan URL unduhan untuk file dengan memanggil GetDownloadUrlAsync() .

// Fetch the download URL
reference.GetDownloadUrlAsync().ContinueWithOnMainThread(task => {
    if (!task.IsFaulted && !task.IsCanceled) {
        Debug.Log("Download URL: " + task.Result);
        // ... now download the file via WWW or UnityWebRequest.
    }
});

Unduh ke array byte

Anda dapat mengunduh file ke buffer byte di memori menggunakan metode GetBytesAsync() . Metode ini akan memuat seluruh isi file Anda ke dalam memori. Jika Anda meminta file yang lebih besar dari memori aplikasi yang tersedia, aplikasi Anda akan mogok. Untuk melindungi dari masalah memori, pastikan untuk menyetel ukuran maksimal ke sesuatu yang Anda tahu dapat ditangani oleh aplikasi Anda, atau gunakan metode unduhan lain.

// Download in memory with a maximum allowed size of 1MB (1 * 1024 * 1024 bytes)
const long maxAllowedSize = 1 * 1024 * 1024;
reference.GetBytesAsync(maxAllowedSize).ContinueWithOnMainThread(task => {
    if (task.IsFaulted || task.IsCanceled) {
        Debug.LogException(task.Exception);
        // Uh-oh, an error occurred!
    }
    else {
        byte[] fileContents = task.Result;
        Debug.Log("Finished downloading!");
    }
});

Unduh melalui Aliran

Mengunduh file dengan Stream memungkinkan Anda memproses data saat dimuat. Ini memberi Anda fleksibilitas maksimum saat menangani unduhan Anda. Panggil GetStreamAsync() dan berikan prosesor aliran Anda sendiri sebagai argumen pertama. Delegasi ini akan dipanggil di utas latar belakang dengan Aliran yang memungkinkan Anda melakukan operasi atau perhitungan intensif latensi seperti menyimpan konten ke disk.

// Download via a Stream
reference.GetStreamAsync(stream => {
    // Do something with the stream here.
    //
    // This code runs on a background thread which reduces the impact
    // to your framerate.
    //
    // If you want to do something on the main thread, you can do that in the
    // progress eventhandler (second argument) or ContinueWith to execute it
    // at task completion.
}, null, CancellationToken.None);

GetStreamAsync() mengambil argumen opsional setelah pemroses aliran yang memungkinkan Anda membatalkan operasi atau mendapatkan pemberitahuan tentang kemajuan.

Unduh ke file lokal

Metode GetFileAsync() mengunduh file langsung ke perangkat lokal. Gunakan ini jika pengguna Anda ingin memiliki akses ke file saat offline atau untuk berbagi file di aplikasi lain.

// Create local filesystem URL
string localUrl = "file:///local/images/island.jpg";

// Download to the local filesystem
reference.GetFileAsync(localUrl).ContinueWithOnMainThread(task => {
    if (!task.IsFaulted && !task.IsCanceled) {
        Debug.Log("File downloaded.");
    }
});

Anda dapat melampirkan pendengar ke unduhan untuk memantau kemajuan unduhan. Listener mengikuti antarmuka System.IProgress<T> standar. Anda dapat menggunakan instance kelas StorageProgress , untuk menyediakan Action<T> Anda sendiri sebagai callback untuk kutu kemajuan.

// Create local filesystem URL
string localUrl = "file:///local/images/island.jpg";

// Start downloading a file
Task task = reference.GetFileAsync(localFile,
    new StorageProgress<DownloadState>(state => {
        // called periodically during the download
        Debug.Log(String.Format(
            "Progress: {0} of {1} bytes transferred.",
            state.BytesTransferred,
            state.TotalByteCount
        ));
    }), CancellationToken.None);

task.ContinueWithOnMainThread(resultTask => {
    if (!resultTask.IsFaulted && !resultTask.IsCanceled) {
        Debug.Log("Download finished.");
    }
});

Menangani Kesalahan

Ada beberapa alasan mengapa kesalahan dapat terjadi pada pengunduhan, termasuk file tidak ada, atau pengguna tidak memiliki izin untuk mengakses file yang diinginkan. Informasi lebih lanjut tentang kesalahan dapat ditemukan di bagian Menangani Kesalahan pada dokumen.

Langkah selanjutnya

Anda juga bisa mendapatkan dan memperbarui metadata untuk file yang disimpan di Cloud Storage.