cordova暂停时Firebase断开连接

Firebase disconnects on cordova pause

本文关键字:断开 连接 Firebase 暂停 cordova      更新时间:2023-09-26

我的应用程序面临的一个相当大的问题是,除非应用程序暂停,否则大约50%的启动都没有Firebase连接。所以我会:

  1. 启动应用程序以不加载数据
  2. 暂停以加载当前页面上的数据
  3. 恢复以查看数据
  4. 每次我需要发送或接收数据时,重复步骤2和3

代码:

  var onPause = function(){console.log("paused");}
  var onResume = function(){console.log("resumed");}
  document.addEventListener("pause", onPause, false);
  document.addEventListener("resume", onResume, false);
  var connectionRef = new Firebase(FB + "/.info/connected");
  connectionRef.on("value", function(snap){
    if(snap.val() == true){
      console.log("connected       -------[]------");
    } else {
      console.log("not connected   --------[            ]------------");
    }
  });

日志:

resumed
not connected   --------[            ]------------
paused
connected       -------[]------
resumed
not connected   --------[            ]------------
paused
connected       -------[]------

它之所以能在一半时间内发挥作用,是因为它也以相反的方式发挥作用,我认为这是预期的方式。有什么方法可以防止它断开连接吗?或者强制它在恢复时连接?

我找到了问题的原因——这是一个名为phonegap插件推送的插件。当它注册GCM时,它会导致Firebase离线(或在暂停时在线)。

我仍然没有找到真正的解决方案,但作为一个黑客修复程序,我在注册GCM时有一个计时器,这样数据就可以在断开连接之前加载。之后,它依赖于用户长时间不使用该应用程序,因此它可以定期暂停同步。