Google Firebase и Unity (C #): невозможно загрузить png из корзины - PullRequest
2 голосов
/ 21 марта 2019

Характеристики

Unity editor version:       2018.2.8f1
Firebase Unity SDK version: 5.5.0
Additional SDKs:            SimpleFirebaseUnity
Developing on:              Mac
Export Platform:            Android

Проблема

У меня проблемы с настройкой системы для загрузки изображений из хранилища.Я не специалист по базам данных, но я хотел попробовать, просто чтобы узнать, как это делается.Я обнаружил, что Firebase очень полезен для хранения метаданных в базе данных в реальном времени и прост в обращении даже для программиста начального уровня, такого как я.

Проблема в том, что я пытаюсь загрузить файл .png изпапка в хранилище, но я не могу найти, действительно ли файл загружен или он просто потерян в процессе.Я не получаю никаких ошибок в консоли, но когда я открываю папку, в которой должны быть файлы, она пуста.

Код

private SimpleFirebaseUnity.Firebase firebaseDatabase;
private FirebaseQueue firebaseQueue;
private FirebaseStorage firebaseStorage;
private StorageReference m_storage_ref;

// Setup refernece to database and storage
void SetupReferences()
{
    // Get a reference to the database service, using SimpleFirebase plugin
    firebaseDatabase = SimpleFirebaseUnity.Firebase.CreateNew(FIREBASE_LINK, FIREBASE_SECRET);

    // Get a reference to the storage service, using the default Firebase App
    firebaseStorage = FirebaseStorage.DefaultInstance;

    // Create a storage reference from our storage service
    m_storage_ref = firebaseStorage.GetReferenceFromUrl(STORAGE_LINK);

    // Create a queue, using SimpleFirebase
    firebaseQueue = new FirebaseQueue(true, 3, 1f);
}

// ...

IEnumerator DownloadImage(string address, string fileName)
{
    var local_path = Application.persistentDataPath + THUMBNAILS_PATH;
    var content_ref = m_storage_ref.Child(THUMBNAILS_PATH + fileName + ".png");

    content_ref.GetFileAsync(local_path).ContinueWith(task => {
        if (!task.IsFaulted && !task.IsCanceled)
        {
            Debug.Log("File downloaded.");
        }
    });

    yield return null;
}

1 Ответ

0 голосов
/ 21 марта 2019

Может быть много причин, почему это не работает для вас, в том числе:

  • правила безопасности настроены неправильно
  • пути к файлам неверны
  • вы тестируете его на неправильной платформе (Firebase плохо работает в редакторе)
  • ваше устройство блокирует соединение
  • и т. д.

InДля того, чтобы получать сообщения об ошибках, вам необходимо зарегистрировать их:

IEnumerator DownloadImage(string address, string fileName)
{
    var local_path = Application.persistentDataPath + THUMBNAILS_PATH;
    var content_ref = m_storage_ref.Child(THUMBNAILS_PATH + fileName + ".png");

    content_ref.GetFileAsync(local_path).ContinueWith(task => {
        if (!task.IsFaulted && !task.IsCanceled)
        {
            Debug.Log("File downloaded.");
        }
        else
        {
            Debug.Log(task.Exception.ToString());
        }
    });

    yield return null;
}

Имейте в виду, что тестирование в редакторе может не работать.

...