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