【问题标题】:Why doesn't firestore sync work when you close the app?为什么关闭应用程序时 Firestore 同步不起作用?
【发布时间】:2019-11-03 17:12:46
【问题描述】:

每次输入银行信息,我都需要检查名字是否正确,因为我希望这个功能可以离线工作,所以我不能在银行出现不一致的情况。就下面的代码按我想要的方式工作而言。但只有在一种情况下同步失败,即当我按下应用程序的后退按钮直到它关闭时。所以当我打开互联网时,数据没有同步。

  Firestore.instance
      .collection('Regiao')
      .where('idRegiao', isEqualTo: idRegiao)
      .snapshots()
      .listen((data){
        data.documents.forEach((doc) {

          Firestore.instance
            .collection('CadernoCampoDefensivo')
            .document(idCadernoCampo)
            .updateData({'regiao' : doc['nomeRegiao']})
            .then((_){});


        });
  });

【问题讨论】:

    标签: flutter google-cloud-firestore


    【解决方案1】:

    您应用中的代码仅在用户积极使用您的应用时运行。这是按预期工作的,否则任何应用程序都可能在应用程序不活动时做任何它想做的事情,并且电池寿命会受到影响。

    如果此代码需要在单个位置运行以响应其他用户更新数据,那么在您的手机内部通常不是执行此操作的最佳位置。相反,请考虑在您控制的服务器或Cloud Functions for Firebase 中运行它。这些解决了连接问题(它们比电话更可能连接到网络)和电池寿命(因为它们连接到主电源)。

    【讨论】:

    • 我明白了,但是为什么在某些情况下firestore可以将数据同步为关闭的应用程序?就我而言,我想先检查一个集合,以确认数据是正确的。但如果我关闭应用程序,数据不会同步。
    • 您共享的代码没有理由说明其中一些可以工作而另一些不能。它通常更多地取决于操作系统而不是您的代码,因为操作系统控制着网络连接 - 如果应用程序未处于活动状态,可能会更快地限制。
    • 对。我要做的很简单,我只想更新集合中的一个数据,而不是写不一致的数据我之前在一个集合中寻找正确的名称。问题是用户在请求此操作时将离线,并希望在再次连接时自动同步 Firestore。你知道如何帮助我做到这一点吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-07
    • 1970-01-01
    • 1970-01-01
    • 2013-08-09
    • 2022-01-13
    • 1970-01-01
    相关资源
    最近更新 更多