Google Firebase iOS 构建将文件上传到 Mac 上的存储,但在 iPad 上运行时触发 StorageException

Posted

技术标签:

【中文标题】Google Firebase iOS 构建将文件上传到 Mac 上的存储,但在 iPad 上运行时触发 StorageException【英文标题】:Google Firebase iOS build uploads file to storage on Mac, but triggers StorageException when running on iPad 【发布时间】:2021-09-11 06:37:30 【问题描述】:

我使用 Unity (2019.4) 和 Google Firebase SDK 构建了一个 ios 应用。在这个场景中,我从 BLE 设备获取数据,将其写入 .csv,然后将此 .csv 上传到 Firebase 存储。当我在我的 Mac (OS 10.15.7) 上的 Unity 编辑器中运行此应用程序时,.csv 文件会正确上传。但是,当我将此脚本构建到我的 iPad Pro (14.4.2) 时,我得到了 StorageException:

Autoconnected Player 上传失败,因为 System.AggregateException:发生了一个或多个错误。 ---> Firebase.Storage.StorageException:在所需的引用处不存在对象

管理我的 .csv 上传的协程在这里:

private IEnumerator UploadCSV()
    
        string filepath = GetComponent<CSVManager>().WriteCSV();
        fbS = FirebaseStorage.DefaultInstance;
        var CSVReference = fbS.GetReferenceFromUrl($"gs://ice-app-12.appspot.com/sessioncsv/Guid.NewGuid().csv");
        var uploadTask = CSVReference.PutFileAsync(filepath);
        yield return new WaitUntil(() => uploadTask.IsCompleted);

        if (uploadTask.Exception != null)
        
            Debug.LogError($"Failed to upload because uploadTask.Exception");
            yield break;
        

        var getUrlTask = CSVReference.GetDownloadUrlAsync();
        yield return new WaitUntil(() => getUrlTask.IsCompleted);

        if (getUrlTask.Exception != null)
        
            Debug.LogError($"Failed to get a download url with getUrlTask.Exception");
            yield break;
        

        Debug.Log($"Download from getUrlTask.Result");

    

这几天我一直在努力解决这个问题。我很困惑,因为似乎问题出在 CSVReference 中,但我不明白为什么该脚本可以在我的 Mac 上正常工作,但不能在我的 iPad 上正常工作。我将不胜感激!

【问题讨论】:

【参考方案1】:

不管怎样,我能够通过从 PutFileAsync() 上传函数切换到 PutBytesAsync() 来解决该错误。为此,我必须将本地数据结构从 .csv 文件更改为字节数组。进行此切换后,我可以将 .csv 文件上传到我的 Firebase 存储桶。

我仍然不明白为什么我只在 iPad 上收到 PutFileAsync() 错误。但这个解决方案目前有效。

【讨论】:

以上是关于Google Firebase iOS 构建将文件上传到 Mac 上的存储,但在 iPad 上运行时触发 StorageException的主要内容,如果未能解决你的问题,请参考以下文章

Firebase IOS Google 登录:成功登录后更改视图

利用 Firebase 和 Google App Engine 将后台逻辑添加到实时数据

iOS - 如何将 Firebase Analytics 与现有的 Google Analytics、GoogleService-Info.plist 集成

将 google firebase 分析与 iOS 操作扩展一起使用

将 APNS 证书添加到 Google Firebase

使用 Swift Package Manager 将 Google Firebase Admob 添加到 iOS 项目 [关闭]