我使用firebase-js-sdk(在Vue PWA中)来监听Firestore的实时更新。
要在应用程序处于后台后还原应用程序,请使用“vuex-persist”作为应用程序状态。除应用程序状态外,我还需要通过使用相同参数在同一集合上调用.onSnapshot来重新建立实时查询。
我想知道firebase-js-sdk是否能够重用实时查询,这是在应用程序进入后台之前请求的。否则,每次用户切换到后台并返回时,我都会收费。
谢谢你的帮助,托马斯
解决方案:问题不在于如何使恢复(包括恢复实时监听器)在技术上有效。我主要感兴趣的是如何避免在每次实时监听器的恢复发生时收取费用。
根据这2个答案:
如果满足以下先决条件,我将不会被收费:
您应该在main.js中初始化Firebase,或者基本上是在应用程序启动或前台时始终启动的页面,以便即使您再次访问前台时分离了侦听器,Firebase也会启动,因此新的侦听器可以被创造。
所以在你的main.js中,你会有类似的东西:
import Firebase from 'firebase'
let config = {
apiKey: "...",
authDomain: "...",
databaseURL: "...",
storageBucket: "...",
messagingSenderId: "..."
};
let app = Firebase.initializeApp(config)
let db = app.database()
let booksRef = db.ref('books')
//....etc///
如果您正确设置并在每次加载页面时运行的方法中设置侦听器,则始终有一个侦听器。只需确保您避免创建多个侦听器。