当应用程序在后台打开超过 30 分钟时,Cordova 会执行某些操作

Posted

技术标签:

【中文标题】当应用程序在后台打开超过 30 分钟时,Cordova 会执行某些操作【英文标题】:Cordova do something when the app has been open in the background for more than 30 minutes 【发布时间】:2019-09-04 16:32:02 【问题描述】:

我正在使用 react 和 Cordova 构建一个混合应用程序。我需要在后台关闭应用程序 30 分钟后渲染特定组件。

我有两个事件监听器

    “暂停”检测应用程序是否在后台打开。 在这里,我将 localStorage 设置为当前日期/时间。

    当应用在后台打开后打开时“恢复”。 在这里我得到当前时间,本地存储的时间并检查两者之间的时间是否为 30 分钟。这就是我的问题所在,它总是返回false。我的问题与 react/cordova 更相关。有人可以解释我做错了什么吗?

// when the app is open in the backgroud 
document.addEventListener("pause", () => 
    localStorage.setItem("appTimeout", Date.now());
,false);

// when you reopen the app
document.addEventListener("resume", () => 
    setTimeout(() => 
        const minutes = 1000 * 30 * 60;
        const closeTime = localStorage.getItem("appTimeout");
        if(Date.now() - Number(closeTime) >= minutes)
            //render component
        
    , 0);
,false);

【问题讨论】:

您可以启动一个计时器(就像您所做的那样),一旦达到时间限制,您就可以将一个道具传递给显示该消息的组件 setTimout 似乎在暂停事件监听器中不起作用。 您应该有某种事件,您的 React 应用程序会以某种方式处理该事件以检测 afk 模式。检测到此事件后,您需要启动计时器。如果 afk 模式被用户活动中断,您需要清除该超时。在我看来,document 不需要添加任何 eventListeners 我最终使用了 react-idle-timer,它正是我想要的。谢谢 【参考方案1】:

在为此头疼了很多之后,我最终为此使用了 react-idle-timer。 https://www.npmjs.com/package/react-idle-timer

【讨论】:

以上是关于当应用程序在后台打开超过 30 分钟时,Cordova 会执行某些操作的主要内容,如果未能解决你的问题,请参考以下文章

在后台运行应用程序超过 10 分钟

仅当应用程序打开并运行时,如何在后台运行方法?

Vaadin 7 在执行后台线程后不刷新 UI(仅当它需要超过 5 分钟时)

如何让你的 iOS 应用在后台运行超过 3 分钟?

如何让我的应用程序超过 10 分钟。在后台?

使计时器在后台 iOS 上运行 3 分钟以上