Mit Cloud Storage for Firebase können Sie Inhalte schnell und einfach Dateien aus einem Cloud Storage Bucket wird von Firebase bereitgestellt und verwaltet.
Referenz erstellen
Wenn Sie eine Datei herunterladen möchten, Cloud Storage-Referenz erstellen in der Datei, die Sie herunterladen möchten.
Sie können eine Referenz erstellen, indem Sie untergeordnete Pfade an das Stammverzeichnis Ihres
Cloud Storage Bucket, oder Sie erstellen eine Referenz aus einem vorhandenen Bucket
gs://
- oder https://
-URL, die auf ein Objekt in Cloud Storage verweist.
// 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");
Dateien herunterladen
Sobald du eine Referenz hast, kannst du Dateien von Cloud Storage herunterladen auf vier Arten:
- Download von einer URL
- In ein Byte-Array herunterladen
- Mit einem Stream herunterladen
- In eine lokale Datei herunterladen
Welche Methode Sie zum Abrufen Ihrer Dateien verwenden, hängt davon ab, wie Sie die Daten in deinem Spiel verbrauchen.
Download von einer URL
Wenn Sie eine URL mit WWW
oder UnityWebRequest
von Unity verwenden möchten, können Sie eine Download-URL für eine Datei abrufen, indem Sie GetDownloadUrlAsync()
aufrufen.
// 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. } });
In ein Byte-Array herunterladen
Sie können die Datei mit der Methode GetBytesAsync()
in einen Byte-Zwischenspeicher im Arbeitsspeicher herunterladen.
Mit dieser Methode wird der gesamte Inhalt der Datei in den Arbeitsspeicher geladen.
Wenn Sie eine Datei anfordern, die größer als der verfügbare Arbeitsspeicher Ihrer App ist, stürzt die App ab.
Um Speicherprobleme zu vermeiden, sollten Sie für die maximale Größe einen Wert festlegen
die deine App verarbeiten kann. Du kannst auch eine andere Downloadmethode verwenden.
// 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!"); } });
Über einen Stream herunterladen
Wenn Sie die Datei mit einem Stream herunterladen, können Sie die geladenen Daten verarbeiten.
So sind Sie bei der Handhabung Ihres Downloads sehr flexibel. Anruf
GetStreamAsync()
und übergeben Sie Ihren eigenen Streamprozessor als erstes Argument.
Dieser Bevollmächtigte wird in einem Hintergrundthread mit einem Stream aufgerufen,
können Sie latenzintensive Vorgänge oder Berechnungen wie
Speichern der Inhalte auf der Festplatte.
// 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()
übernimmt optionale Argumente nach dem Streamprozessor, der
ermöglicht es Ihnen, den Vorgang abzubrechen oder über den Fortschritt benachrichtigt zu werden.
In eine lokale Datei herunterladen
Mit der Methode GetFileAsync()
wird eine Datei direkt auf ein lokales Gerät heruntergeladen. Verwenden Sie diese Option, wenn
möchten Ihre Nutzer offline auf die Datei zugreifen oder sie in einem
für eine andere App.
// 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."); } });
Sie können Listener an Downloads anhängen, um den Fortschritt des
herunterladen. Der Listener folgt dem Standard-System.IProgress<T>
. Sie können eine Instanz der Klasse StorageProgress
verwenden, um
Deinen eigenen Action<T>
als Callback für Fortschrittszähler anzeigen.
// 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."); } });
Fehler beheben
Fehler können aus verschiedenen Gründen beim Download auftreten, Datei nicht vorhanden oder der Nutzer hat keine Zugriffsberechtigung für die gewünschte Datei. Weitere Informationen zu Fehlern finden Sie in der Fehler beheben der Dokumentation.
Nächste Schritte
Sie können auch Metadaten für Dateien abrufen und aktualisieren, die in Cloud Storage gespeichert sind.