Приложение Unity для Windows неправильно загружает файлы из хранилища Firebase. (ошибка msg : Не удалось получить данные)

# #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