推送通知。如何知道应用程序是在前台还是后台

时间:2013-10-31 10:37:49

标签: ibm-mobilefirst

当通知到达时,应用程序会执行为接收通知而配置的回调。

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

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

谢谢。

1 个答案:

答案 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,我确信有各种奇怪的时间例,但它似乎涵盖了许多案例。