0

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

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

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

谢谢你。

4

1 回答 1

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 秒内到达的东西,可能是在我们睡着的时候到达的,现在刚刚交付)

这有点麻烦,我敢肯定有各种奇怪的时间情况,但它似乎涵盖了许多情况。

于 2013-10-31T22:22:54.780 回答