Unity 中的 Firebase - 禁用持久性

Posted

技术标签:

【中文标题】Unity 中的 Firebase - 禁用持久性【英文标题】:Firebase in Unity - Disable persistence 【发布时间】:2018-01-28 16:07:58 【问题描述】:

我正在使用 Firebase 为 android 制作手机游戏。该游戏有一个系统,允许玩家离线玩游戏并根据保存的日期时间从数据库中更新/检索数据。

这个日期时间(写在本地文件中)应该与保存在数据库中的相同,为此我写了这个:

reference.Child("users/"+this.id+"/updateDate").SetValueAsync(updateDate).ContinueWith(task =>

    if (task.IsCompleted) 
        Debug.Log("Setting new update date into file: "+updateDate);
        this.lastUpdateDate = updateDate;
        WriteFile();
    
);

问题是,即使没有互联网连接,值也会被修改,但永远不会满足以下条件,所以会发生这样的情况: 如果您读取该值,即使没有互联网连接,您也会读取“新”日期时间,而文件仍包含“旧”日期时间(实际在数据库中的那个)。

我知道最好的解决方案是删除所有内容并让脱机持久性发挥作用,但我做了一些测试,它甚至在 Android 的构建中都不起作用。所以我的问题如下:

有没有办法在 Unity 中禁用离线持久性?

因为我已经尝试过 "FirebaseDatabase.DefaultInstance.setPersistenceEnabled(false)" 但似乎 Unity 的 API 中甚至不存在该函数(它给我编译错误)。

感谢您的帮助!

【问题讨论】:

我发现有一种方法可以检查是否有连接。我只希望它适用于 Unity。是否有 Firebase 开发人员仍然知道主要问题的答案? 【参考方案1】:

要禁用持久性,请执行以下操作:

Firebase.FirebaseDatabase.DefaultInstance.SetPersistenceEnabled(false);

如果您来自 Google,在使用 2 个编辑器测试 Unity 时出现“无法初始化持久性存储”崩溃,请执行

#if UNITY_EDITOR
  Firebase.FirebaseDatabase.DefaultInstance.SetPersistenceEnabled(false);
#endif

【讨论】:

以上是关于Unity 中的 Firebase - 禁用持久性的主要内容,如果未能解决你的问题,请参考以下文章

在 Unity Firebase SDK 中禁用广告 ID (AAID) 收集运行时

Swift 3 中的 Firebase 存储图像持久性

Unity Firebase 中的 InitializationException

Android 中的 Firebase 数据库持久性错误

Unity 中的 Firebase / Google VR 链接器错误 - iOS

使用 Unity 进行 Firebase 电话身份验证