# #c# #firebase #unity3d #firebase-storage
Вопрос:
Я использовал GetDownloadUrlAsync (), чтобы получить URL-адрес файла, хранящегося в firebase, а затем загрузил его с помощью UnityWebRequest.
Однако некоторые компьютеры неправильно получают файлы. Сообщение об ошибке «Не удалось получить данные».
Размер файла составляет 30-40 МБ. ТИП MIME-приложение/октетный поток, а расширение файла -«*. dat».
Я знаю, что Firebase SDK хорошо работает на Android и iOS. Однако в моем приложении для Windows оно загружается с помощью UnityWebRequest, поэтому его необходимо загрузить правильно.
Кроме того, я скопировал URL-адрес в веб-браузер и загрузил его. Опять же, он загружает только 1~2 МБ и останавливается. Похоже, что это не проблема с приложением.
По-видимому, это происходит с 3-4 компьютерами из 100 компьютеров.
Firebase.Storage.StorageReference pFile = m_pStorage.Child(sSrcPath);
pFile.GetDownloadUrlAsync().ContinueWithOnMainThread((Task<Uri> task) =>
{
string download_url = task.Result.ToString();
Debug.Log("#### " download_url);
TUtil.DownloadBytes(download_url, (bOk, pBytes) =>
{
});
});
static IEnumerator DownloadBytes(string sURL, OnFuncBytes pOnFunc, OnFuncInt pOnFuncInt)
{
using(UnityWebRequest www = UnityWebRequest.Get(sURL))
{
var async = www.SendWebRequest();
while (true)
{
if (www.isHttpError || www.isNetworkError)
{
if(pOnFunc != null)
{
UnityEngine.Debug.Log("## DOWNLOAD ERROR : " www.error);
pOnFunc(false, null);
}
yield break;
}
if (async.isDone)
{
if(pOnFunc != null)
pOnFunc(true, www.downloadHandler.data);
www.Dispose();
yield break;
}
yield return null;
int downloadDataProgress = (int)(www.downloadProgress * 100);
if(pOnFuncInt != null)
pOnFuncInt(true, downloadDataProgress);
}
}
}
Комментарии:
1. Для меня нет очевидной причины, по которой это должно провалиться. Он
GetDownloadUrlAsync
предназначен для использования на веб-сайтах, где его можно использовать в качестве цели<img src="{{url}}">
. Обратите внимание, что если у вас уже есть добавленный SDK для хранилища, в Windows уже есть некоторая функциональность-вы должны иметь возможность протестировать ту же логику, что и на мобильных устройствах, в своем настольном приложении (или, по крайней мере, в редакторе Unity), чтобы увидеть, по-прежнему ли проблема возникает на неправильно работающих компьютерах. В противном случае я бы рекомендовал отправить сообщение об ошибке: firebase.google.com/support/troubleshooter/report/bugs