【问题标题】:App in background w/ setTimeout and push notification带有/ setTimeout 和推送通知的后台应用程序
【发布时间】:2018-10-09 21:44:15
【问题描述】:

我们遇到了一个问题,即在应用程序进入前台时执行 setTimeout 处理程序之前执行推送通知代码。以下是事件的顺序:

  1. 用户启动应用程序。 setTimeout(this.logout, 10000) 被调用。
  2. 应用程序被置于后台。计时器继续倒计时。
  3. 等待 10 秒过去。因为应用在后台,所以在应用被买回前台之前不会调用this.logout回调。
  4. 推送通知已发送到设备。
  5. 现在,用户点击推送通知,打开应用程序。
  6. 执行推送通知代码
  7. this.logout 代码立即执行。

结果是用户在查看推送通知之前被踢出应用程序。

有没有办法以某种方式重新安排事件队列中的事件,以便首先执行 this.logout,然后执行推送通知处理代码?

编辑:我们正在使用 Expo Push Notifications SDK

示例代码

componentDidMount() {
  this.notifications = Notifications.addListener(this.handleNotification);
  this.timeout = setTimeout(this.logout, 10000);
}

componentWillUnmount() {
  Notifications.remove(this.notifications);
}

this.handleNotification = () => { ... }
this.logout = () => { ... }

【问题讨论】:

  • 你用的是哪个推送通知库,能否也贴一些sn-p的代码以便更好的理解。
  • @Anrdoid Noob 所以...如果我没记错的话,callback 函数可以在这里工作吗?

标签: javascript react-native push-notification settimeout expo


【解决方案1】:

我通过关闭 setTimeout 计时器并使用时间戳 (Date.now() - startTime) 来查找经过的时间量来解决它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    • 2016-06-03
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    • 2015-04-12
    • 1970-01-01
    相关资源
    最近更新 更多