【发布时间】:2018-10-09 21:44:15
【问题描述】:
我们遇到了一个问题,即在应用程序进入前台时执行 setTimeout 处理程序之前执行推送通知代码。以下是事件的顺序:
- 用户启动应用程序。
setTimeout(this.logout, 10000)被调用。 - 应用程序被置于后台。计时器继续倒计时。
- 等待 10 秒过去。因为应用在后台,所以在应用被买回前台之前不会调用
this.logout回调。 - 推送通知已发送到设备。
- 现在,用户点击推送通知,打开应用程序。
- 执行推送通知代码
-
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