ios - Firebase:iOS应用程序被杀死并重新启动后如何保留用户提要
<p><p>我的应用中有一个 <code>TableView</code>,它会在应用启动时从 Firebase 数据库加载用户的提要。现在,如果用户杀死应用程序并重新打开它,<code>TableView</code> 是完全空白的,它会调用 <code>retrieveFeed</code> 函数再次检索最近的十个帖子。我希望这些帖子从本地设备加载,而不是从数据库服务器调用。</p>
<p>我通过阅读 Firebase 文档了解到,可以通过启用持久性并将 <code>keepSynced</code> 设置为 <code>true</code> 来添加此离线功能,就像我在下面的代码中所做的那样。在应用被终止并重新启动后,我是否需要使用 Core Data 来将提要中最近的 10 个帖子保存在存储空间中,还是 Firebase 应该能够做到这一点?</p>
<p>在我的 <code>AppDelegate.swift</code> 中:</p>
<pre><code>FirebaseApp.configure()
Database.database().isPersistenceEnabled = true
</code></pre>
<p>在我的 <code>DataService.swift</code>(其中包含对 Firebase 的所有调用):</p>
<pre><code>func retrieveFeed(queryNumber: UInt,lastSeenKey: String?, completion: @escaping ([ Int: DataService.FeedQuote ]) -> ()){
var dbquery = DatabaseQuery()
if (lastSeenKey == nil){
dbquery = self.user_ref.child(self.currentUserUserId).child("feed").queryOrderedByKey().queryLimited(toFirst: queryNumber)
}
else {
dbquery = self.user_ref.child(self.currentUserUserId).child("feed").queryOrderedByKey().queryStarting(atValue: lastSeenKey).queryLimited(toFirst: queryNumber)
}
dbquery.keepSynced(true)
dbquery.observeSingleEvent(of: .value, with: { (snapshot) in
var FeedQuotes = ()
// ...
// Data processing here
// ...
completion(correctlyOrderedFeedQuotes)
})
}
</code></pre></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>我意识到我的错误:在我的函数 <code>retrieveFeed</code> 中,我还调用 FirebaseStorage 来检索图像(Firebase 目前不支持缓存)。这些调用没有正确完成持久性和同步设置。一旦我使用这个 pod (<a href="https://github.com/antonyharfield/FirebaseStorageCache" rel="noreferrer noopener nofollow">https://github.com/antonyharfield/FirebaseStorageCache</a>) 调整了这些调用,它就开始工作了!</p></p>
<p style="font-size: 20px;">关于ios - Firebase:iOS应用程序被杀死并重新启动后如何保留用户提要,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/51129576/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/51129576/
</a>
</p>
页:
[1]