通过 iOS 离线使用 firebase

Posted

技术标签:

【中文标题】通过 iOS 离线使用 firebase【英文标题】:Using firebase offline with iOS 【发布时间】: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 设备。跨度> 【参考方案1】:

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

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

【讨论】:

以上是关于通过 iOS 离线使用 firebase的主要内容,如果未能解决你的问题,请参考以下文章

通过 QtLocation 插件使用离线数据

为啥重新连接成功时socket.io客户端会发送离线消息?

IOS:限制删除应用或向家长发送通知(离线)

如何触发 iOS 应用开始离线识别语音命令?

iOS 应用的离线 Ad-Hoc 部署

排查指南 | 两个案例学会从埋点排查 iOS 离线包