Google Firebase и Unity (C #): не удается загрузить png из корзины

#c# #firebase #unity3d #firebase-realtime-database #download

#c# #firebase #unity-игровой движок #firebase-база данных в реальном времени #Скачать

Вопрос:

Технические характеристики

 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 amp;amp; !task.IsCanceled)
        {
            Debug.Log("File downloaded.");
        }
    });

    yield return null;
}
  

Ответ №1:

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

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

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

 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 amp;amp; !task.IsCanceled)
        {
            Debug.Log("File downloaded.");
        }
        else
        {
            Debug.Log(task.Exception.ToString());
        }
    });

    yield return null;
}
  

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