通过 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的主要内容,如果未能解决你的问题,请参考以下文章