#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;
}
Имейте в виду, что тестирование в редакторе может не сработать.