簡體   English   中英

延遲HTML5通知?

[英]Delay an HTML5 notification?

我一直在查看HTML通知和服務人員的狀態,並且想知道-是否可以顯示延遲通知? 基本上,我想說“在30分鍾內提醒我”(或其他內容),然后在30分鍾后向用戶發送通知。 可以立即安排,但我沒有看到任何允許它的功能。

我會丟失某些東西嗎?或者在當前狀態下(尤其是Chrome API),這是不可能的嗎?

對於服務工作者,這是可能的,但並非一帆風順,至少在目前的形式上如此。 這並不簡單,因為服務工作者無法將自己保持半小時的喚醒狀態,也無法使用setTimeoutsetInterval喚醒自身。 瀏覽器只會關閉工作進程,並且不會保留任何超時或間隔的記錄。 您可以通過一個打開的選項卡中的一條消息將其喚醒,但是您說不想保留一個打開的選項卡,如果您假設使用了打開的選項卡,那為什么還要打擾服務人員呢? 正如Jeff Posnick在評論中建議的那樣,您也許最終可以使用Sync或PeriodicSync API,但是,正如他還指出的那樣,它們尚未實現,也並非真的打算用於此目的。

可以使用Push API完成當前版本的Chrome中所需的操作,但必須將服務器包含在循環中,並使用推送通知服務(即GCM)進行設置。 大致如下:

  • 當您決定延遲通知時,請讓服務器知道
  • 延遲后,服務器會向您的用戶發送推送消息
  • 服務人員響應該推送而醒來並創建新的通知

最后一部分很麻煩,因為當前您實際上無法通過推送發送任何類型的有效負載,因此您的服務人員將需要某種方式來弄清楚通知的內容。 也許服務器有一個被延后的通知列表,服務工作者可以從那里獲取通知,或者您將它們保存在IndexedDB中。

改編自https://developer.cdn.mozilla.net/media/uploads/demos/e/l/elfoxero/c17223c414d8ddafb7808972b5617d9e/html5-notifications_1400214081_demo_package/

<script>
    var Notification = window.Notification || window.mozNotification || window.webkitNotification;

    function show() {
        window.setTimeout(function () {
            var instance = new Notification("Hello World!");
        }, 5000);

        return false;
    }
</script>

<a href="#" onclick="return show()">Notify me!</a>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM