0
当通知到达时,应用程序会执行配置为接收通知的回调。推送通知。如何知道应用程序是在前台还是在后台
如果通知在后台与应用程序一起到达,我希望应用程序移至特定视图。但是,如果通知在前台应用程序到达,我只想打印警报。
如何在回调函数中知道通知到达时应用程序的状态?
谢谢。
当通知到达时,应用程序会执行配置为接收通知的回调。推送通知。如何知道应用程序是在前台还是在后台
如果通知在后台与应用程序一起到达,我希望应用程序移至特定视图。但是,如果通知在前台应用程序到达,我只想打印警报。
如何在回调函数中知道通知到达时应用程序的状态?
谢谢。
我不知道如何可靠,这是,但似乎应用程序运行时的工作,但只是在后台:
var sleeping = false;
document.addEventListener("pause", function() {sleeping = true;}, false);
document.addEventListener("resume", function() {sleeping = false;}, false);
然后:
function pushNotificationReceived(props, payload) {
if (sleeping) {
alert("caught me napping");
} else {
alert("I've been waiting for you.");
}
}
棘手大小写是应用程序完全停止的时候。您需要在通知回调被调用之前登录,并且在此之前很久就会触发resume事件。如果你要处理这种情况下,你可能会需要像你WL.Client.Push.onReadyToSubscribe功能如下:
sleeping = true;
setTimeout(function(){sleeping = false;}, 1000);
(任何东西正准备认购1秒钟之内到达的,大概到达时我们睡着了,现在正在交付)
这是一个haCk,我敢肯定有各种各样的奇怪的时间情况,但它似乎涵盖了许多案件。
嗨。你测试过了吗?当通知到达时,我已经将跟踪和(在iPad中)应用程序所做的第一件事是将sleeping值更新为false,然后执行pushNotificationReceived。 – Jxadro
是的,正如我所说的,我不知道它有多可靠......它取决于不同步行为的顺序。但在我的测试中,上述解决方案奏效。我正在测试Android,所以也许这就是差异。您可以将简历回调更改为使用setTimeout(就像上面的onReadyToSubscribe所做的那样)并不漂亮。比解决方案更多的解决方法。 –