2013-10-31 31 views
0

当通知到达时,应用程序会执行配置为接收通知的回调。推送通知。如何知道应用程序是在前台还是在后台

如果通知在后台与应用程序一起到达,我希望应用程序移至特定视图。但是,如果通知在前台应用程序到达,我只想打印警报。

如何在回调函数中知道通知到达时应用程序的状态?

谢谢。

回答

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,我敢肯定有各种各样的奇怪的时间情况,但它似乎涵盖了许多案件。

+0

嗨。你测试过了吗?当通知到达时,我已经将跟踪和(在iPad中)应用程序所做的第一件事是将sleeping值更新为false,然后执行pushNotificationReceived。 – Jxadro

+0

是的,正如我所说的,我不知道它有多可靠......它取决于不同步行为的顺序。但在我的测试中,上述解决方案奏效。我正在测试Android,所以也许这就是差异。您可以将简历回调更改为使用setTimeout(就像上面的onReadyToSubscribe所做的那样)并不漂亮。比解决方案更多的解决方法。 –

相关问题