使用Firebase离线时观察员挂起

bbo*_*uet 5 offline ios firebase firebase-realtime-database

我正在尝试为我们的iOS应用程序添加离线功能(简单地说,这是一个管理用户和项目的应用程序),它依赖于Firebase.这是使用Swift 3.0.我按照指南进行了以下操作:

  1. 在FIRApp.configure()之后立即将此添加到我的应用程序委托:

    FIRDatabase.database().persistenceEnabled = true

  2. 在users/userKey和所有所述用户的项目/ projectKey节点上调用keepSynced(true).

该应用程序在线(显然)工作正常,并保持同样良好的离线工作,即使我在断开互联网时重新启动它.当我在离线时创建新项目时出现问题.我使用以下内容创建一个新项目:

let projectKey = FIRDatabase.database().reference(withPath: "projects").childByAutoId().key
let logsKey = FIRDatabase.database().reference(withPath: "projects").child(projectKey).child("logs").childByAutoId().key
FIRDatabase.database().reference().updateChildValues([
    "projects/\(projectKey)/key1" : value1,
    "projects/\(projectKey)/key2" : [
        "subkey1" : subvalue1,
        "subkey2" : subvalue2
    ],
    "projects/\(projectKey)/key3/\(logKey)" : [
        "subkey3" : subvalue3,
        "subkey4" : subvalue4
    ]
]) { error, ref in
    if error != nil {
        print("Error")
        return
    }
}
Run Code Online (Sandbox Code Playgroud)

在项目创建之后,如果我尝试在"projects/projectKey/key1"或"projects/projectKey/key2"上调用observeSingleEvent,一切都很好.但是,在"projects/projectKey/key3/logKey"上调用相同的函数永远不会触发阻塞/回调 - 只有在连接回来时才会调用它.

我已启用FIRDatabase日志记录(确认发生本地写入)以查找提示但似乎无法找出问题.

有什么我想念的吗?

注意:使用最新的Firebase iOS SDK(3.5.2).

编辑:如果我扩展深层链接似乎工作正常:

let projectKey = FIRDatabase.database().reference(withPath: "projects").childByAutoId().key
let logsKey = FIRDatabase.database().reference(withPath: "projects").child(projectKey).child("logs").childByAutoId().key
FIRDatabase.database().reference().updateChildValues([
    "projects/\(projectKey)" : [
        "key1" : value1,
        "key2" : [
            "subkey1" : subvalue1,
            "subkey2" : subvalue2
        ],
        "key3" : [
            logKey : [
                "subkey3" : subvalue3,
                "subkey4" : subvalue4
            ]
        ]
    ]
]) { error, ref in
    if error != nil {
        print("Error")
        return
    }
}
Run Code Online (Sandbox Code Playgroud)

这可能是Firebase在离线时管理其本地缓存状态的方式中的错误吗?就好像它不知道在updateChildValues中使用深层链接创建的中间密钥.