【问题标题】:Using firebase offline with iOS通过 iOS 离线使用 firebase
【发布时间】:2014-11-01 19:32:58
【问题描述】:

我想知道是否有人遇到过这个问题,或者事实上这根本不是问题,而是 firebase 的一种运行方式。

我正在使用 FEventTypeChildChanged 来监控我的 iOS8 应用程序中对我的 Firebase 的更改。但是,如果应用当前未运行,并且孩子在不同位置在线更改,则在应用重新启动时不会调用此事件。

应用在线时运行良好。

几个月前我使用了firebase,我确信从离线返回时会调用此事件,但现在似乎并非如此。

我使用的代码直接来自 firebase 文档:

Firebase *postsRef = [[Firebase alloc] initWithUrl: @"https://*******.firebaseio.com/"];

[postsRef observeEventType:FEventTypeChildChanged withBlock:^(FDataSnapshot *snapshot) {
    NSLog(@"%@", snapshot.value);
} withCancelBlock:^(NSError *error) {
    NSLog(@"%@", error.description);
}];

json 结构看起来像:

{
  "test" : {
    "A value" : "test value" <== I am modifying 'test value'
  }
}

提前感谢您的帮助

【问题讨论】:

  • 重新启动到底是什么意思?重现的细节和步骤在这里需要非常精确,因为有很多可能的排列。
  • 如果我强制退出应用并重新打开,甚至让它继续运行然后让 iOS 设备重新联机,则更新的数据不会从 firebase 发送到 iOS 设备。跨度>

标签: ios objective-c firebase


【解决方案1】:

应用永远不会在(重新)启动后立即收到“子更改”事件。相反,Firebase 只会为您提供适当的事件集,让您了解数据的当前状态。在应用程序重新启动时,这将只是针对当前存在的所有子项的一堆“添加子项”事件。

在您的应用启动并且您已获得初始“添加子项”事件后,如果其中一个子项发生更改,Firebase 将通过“子项已更改”事件通知您。但是,您只会在之前获得“添加孩子”事件之后获得“孩子更改”事件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多