2013-10-31 67 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所做的那樣)並不漂亮。比解決方案更多的解決方法。 –

相關問題