菜鸟教程小白 发表于 2022-12-11 20:18:55

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 ]) -&gt; ()){
    var dbquery = DatabaseQuery()
    if (lastSeenKey == nil){
      dbquery = self.user_ref.child(self.currentUserUserId).child(&#34;feed&#34;).queryOrderedByKey().queryLimited(toFirst: queryNumber)
    }
    else {
      dbquery = self.user_ref.child(self.currentUserUserId).child(&#34;feed&#34;).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]
查看完整版本: ios - Firebase:iOS应用程序被杀死并重新启动后如何保留用户提要