离线使用 Firebase 时观察者挂起

2024-01-04

我正在尝试向我们的 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
    }
}

项目创建后,如果我尝试在“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
    }
}

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


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

离线使用 Firebase 时观察者挂起 的相关文章

  • 使用 firebase 过滤分页列表

    我正在尝试使用 firebase 和 swift 制作一个分页过滤列表 但请随意用您最喜欢的编程语言回答 而不过滤客户端上检索到的数据 假设我有这个结构 matches match 1 name Match 1 users user 1 o
  • iOS后台获取时间限制崩溃

    我已经设置了背景获取 使用大纲NSScreencast 第 92 集 http nsscreencast com episodes 92 background fetch BOOL application UIApplication app
  • 在 Pages 文稿中打开文本—Swift

    在我的 Swift 2 应用程序中 用户通过文本字段创建一串文本 然后将其共享给另一个应用程序 现在 我只能将文本共享为 txt 文件 这不提供选项Open In Pages当我打开系统共享对话框时 如何才能让用户可以选择将输入的文本作为
  • Swift:如何让游戏中的角色只有落地后才能跳跃?

    我正在开发一款游戏 我的角色可以从一个陆地跳到另一个陆地 我已经把所有事情都做好了 除了我剩下的问题是 如果你继续点击屏幕 他可以永远跳跃 我希望他必须先落地才能再次跳跃 import SpriteKit import GameplayKi
  • 如何从 Xcode 4.5 卸载 iOS 5.0 模拟器

    我已经安装了 Xcode 4 5 由于我编写应用程序是为了好玩 我不打算支持旧版 iOS 版本 并且为了节省 500 GB iMac 上的空间 是否有办法删除它 尝试从 Xcode 包中支持的平台中删除 iPhone iPhoneSimul
  • Apple 由于崩溃而拒绝了我的应用程序,无法重现它

    我刚刚上传了一个应用程序到应用程序商店 它是为ios 7开发的 他们拒绝了该应用程序 因为我无法重现崩溃 他们向我发送了这份崩溃报告 Exception Type EXC BAD ACCESS SIGSEGV Exception Subty
  • gestureRecognizer shouldReceiveTouch 持续存在于已释放的视图中导致崩溃

    我有一个相当简单的 UITableView 它在堆栈上推送一个新视图 新视图有一个像这样初始化的gestureRecognizer synthesize swipeGestureLeft void viewDidLoad swipeGest
  • Firebase 查询双重嵌套

    鉴于 firebase 中的以下数据结构 我想运行查询来检索博客 efg 我目前不知道用户 ID Users 1234567 name Bob blogs abc zyx 7654321 name Frank blogs efg hij F
  • 按升序对 NSDictionary 进行排序

    我正在尝试排序NSDictionary按升序排列 我正在使用这段代码 NSDictionary valDict self mGetDataDict key rowKey for NSString valueKey in valDict al
  • 依赖于不同队列上的另一个操作的 NSOperation 无法启动

    我有操作的依赖图 并且使用多个队列来组织各种操作流 例如 peopleQueue sitesQueue sessionQueue sessionQueue loginOp fetchUpdatedAccountOp peopleQueue
  • 使用javascript以编程方式触发iOS safari中的复制菜单?

    我正在尝试实现一种用户友好的方式 将一些文本从文本输入字段复制到 iOS Safari 上的剪贴板 我知道无法在这个平台上以编程方式完成此操作 但我希望能够尽可能地指导用户体验 在 iOS Safari 上 当用户手动突出显示某些文本时 会
  • SDK 和 iOS 部署目标。

    我使用最新的 SDK 4 1 构建项目并设置 iOS 部署目标 3 0 如果我使用4 0 sdk的某些方法 我可以在真正的iPhone 3 0上运行我的项目吗 您只能在 OS 3 设备上运行您的项目 如果有条件地编码围绕您想要使用的 OS
  • 如何将设备上未保存的图片上传到dropbox帐户?(IOS)

    Dropbox RestClient 仅保存文件 所以我想先将图像保存在本地文件夹中 然后上传它 结果它保存了文件 但它已损坏 NSString localPath NSBundle mainBundle pathForResource I
  • 如何从第二个视图弹回到根视图?

    我使用 2 将 3 个视图 根视图 第 1 个视图 第 2 个视图 连接在一起modal在 Apple Watch 故事板中继续 1 在根视图中 按下 保存 按钮后 将显示第一个模态视图 2 在第一模态视图中 一旦按下 500 按钮 将显示
  • Firebase + Node.js:错误:找不到 XMLHttpRequest 兼容性库

    Firebase Node js On iOS 安装的 Node js npm 安装 firebase save 节点测试 js 其中 test js 是一个非常简单的连接到 Firebase 的脚本 var firebase requir
  • 隐藏 UITableview 单元格

    我正在尝试从 UITableView 中隐藏单元格 就像删除操作一样 但我只想隐藏它以便稍后在相同位置显示它 我知道 UITableViewCell 有一个名为 隐藏 的属性 但是当我使用此属性隐藏单元格时 它会隐藏但没有动画 并且会留下空
  • Firebase:用户注册后如何进行电话号码验证?

    所以我知道我可以使用电子邮件验证或电话号码验证 但我想做的是在用户注册或登录后进行电话号码验证 如何连接这两种身份验证方法 最后 Firebase中是否有一个函数可以检查用户是否通过电话号码验证 谢谢 即使用户已通过身份验证 您仍然可以使用
  • TestFlight 安装的应用程序因 Swift 包管理器依赖项而崩溃

    我们已经迁移了一些 CocoaPod 依赖项 以便在 Xcode 11 中使用 Swift Package Manager 进行构建和链接 但是 每当我们将应用程序提交到 AppStore Connect 并使用 TestFlight 进行
  • 从应用程序内发送电子邮件中的图像和文本

    如何从我的应用程序内通过电子邮件发送图像和文本 表格数据形式 请大家帮忙并提出建议 谢谢 void sendMailWithImage UIImage image if MFMailComposeViewController canSend
  • iOS 中是否需要 Google App Indexing SDK 才能使用 Google DeepLinking?

    我想用谷歌应用程序索引与我的网页和 iOS 应用程序 我支持通用链接 or 深层链接用谷歌术语 与苹果Search并相应地设置我的网页 From 谷歌文档 https developers google com app indexing i

随机推荐

  • 如何找到哪个异步操作触发 ngZone (导致更改检测)?

    更新堆栈跟踪中的任何更改都会导致globalZoneAwareCallback 您如何找出引发变化的原因 在调试方面 有一个清晰的画面是有好处的 globalZoneAwareCallback是在 zonejs 中声明的函数 用于处理所有事
  • 如何将 JSON 字符串获取到 Int 然后再获取到 Arg Bundle?

    我正在尝试传递从 JSON 字符串中提取的 Int 值以减少代码冗余 在我的 JSON 文件中 我有一个字符串值 resFile 我将这个字符串存储到TAG RES FILE我想将它作为 Int 在 Bundle 中传递 如果你查看我的代码
  • CSS 样式表链接与标题属性的优先级

    我见过 CSS 2 使用链接元素导入的样式表的优先级 https stackoverflow com questions 964328 css 2 precedence of stylesheets imported using link
  • Symfony 模拟 - 单独的防火墙和单独的用户提供商

    我有一个带有两个防火墙的 Symfony 应用程序 一个用于管理员 一个用于普通用户 admin provider admin etc main site form login provider fos userbundle csrf pr
  • 如何更改 Leiningen 和 LightTable 中的 Clojure 版本?

    当我在 LightTable 中的 repl 中输入 clojure version 时 我得到 1 5 1 作为输出 有什么办法可以升级到1 6 0吗 我假设它正在绘制来自 Leiningen 的 Clojure 版本 在我的机器上为 2
  • Impala: 错误: AnalysisException: 分区规范不存在:

    我正在尝试查询 show files in tableA partition column key1 value1 column key2 value2 但是 这会引发错误 ERROR AnalysisException Partition
  • 使用 TFS 2010 API 订阅工作区事件

    我正在尝试编写一些代码来监视本地工作站上的 TFS 工作区 但目前我在触发事件时遇到问题 例如 如果我在工作区中映射一个新文件夹 我想订阅 versionControl UpdatedWorkspace 事件 如果我执行 get 操作 我想
  • JQuery UI:多个进度条 - 设置动态值的问题

    我有一些进度条 搜索结果 其值是在 document ready 上动态设置的 div class progressbar div div class progressbar div div class progressbar div di
  • 如何以编程方式将注册表项的所有权授予管理员?

    当我将一些机器升级到 Windows 10 时 我遇到了一个奇怪的问题 其中 RuntimeBroker 的权限不正确导致出现问题 我发现网上有解决方案 https shauncassells wordpress com 2015 09 2
  • Twitter API statuses_count 是否包含转发?

    在twitter API users show 中 有一个statuses count 它是否包含转发 关于 twitter API 的一个问题是 它们对返回结果中的每一项都没有准确的定义 你只能通过名字猜出含义 它包括转发 手动测试
  • Jquery Ajax beforeSend 和成功、错误和完成

    我有多个 ajax 函数的问题 其中beforeSend of the secondajax post 在之前执行complete的功能first ajax 我在发送之前添加到占位符的加载类适用于第一个 ajax 调用 然而 在第一个 aj
  • 无法减少 axisBottom 中的刻度数

    I m trying to create some bar chart with the U S GDP growth In the x axis all the YYYY MM DD values are shown even thoug
  • 如何使用 Jquery 序列化多个列表

    我有 3 个可排序的 UL 和一个简单的 jquery javascript ul class sortable li whatever li li you li ul ul class sortable li wanne li li pu
  • 带假期的Python日历[重复]

    这个问题在这里已经有答案了 可能的重复 假日日历 文件格式等 https stackoverflow com questions 1986207 holiday calendars file formats et al Hi Python
  • 刷新令牌 Jsonwebtoken

    我在用jsonwebtoken https github com auth0 node jsonwebtoken在 NodeJs API 应用程序中 用于在我的 API 应用程序中验证用户身份 我设置的流程如下 1 用户通过注册 API 进
  • 以编程方式加载视网膜(高质量)图像(在按钮上)

    我有一个我一直无法弄清楚的问题 我已经完成了一个应用程序 可以从正面摄像头拍摄一张照片 从背面摄像头拍摄一张照片 然后将它们合并在一起 该应用程序的名称是GroupCam 但是我有一个问题 我的 UIButtons 从一开始就不会作为视网膜
  • 路由参数错误

    错误发生在这里 defaults new id RouteParameter Optional 我得到的错误 类型 System Web Http RouteParameter 同时存在于 z Ember n SignalR bin Sys
  • Excel 公式需要在单独的列中

    我实在搞不懂这个问题 也许你们可以帮帮我 例如 我需要仅分隔图像名称 xxqti8eli5h2f4abpiz2 jpg lvfdpujvgkf75ve8ikob jpg 在一个单独的专栏中 我列出了 8000 个图像名称 我需要将它们分开
  • 发送表达式到网站返回动态结果(图)

    I use http www regexper com http www regexper com查看图片表示正则表达式很多 我想要一种理想的方法 向站点发送正则表达式 打开显示该表达式的网站 例如 让我们使用正则表达式 s foo A Z
  • 离线使用 Firebase 时观察者挂起

    我正在尝试向我们的 iOS 应用程序 简单地说 一个管理用户和项目的应用程序 添加离线功能 该应用程序依赖于 Firebase 这是使用 Swift 3 0 我已按照指南进行操作并执行了以下操作 在 FIRApp configure 之后将