1

通知を送信する必要がある Web アプリを作成しています。30 秒ごとに 12 の異なる項目をチェックし、そのうちの 1 つが基準を満たす場合、通知を送信する必要があります。その後、次の 30 分間隔 (毎時 1 時間半) まで、別の通知を送信するべきではありません。通知が既に送信されているかどうかを確認し、再度送信しないようにするにはどうすればよいですか? これはタグを介して行われたと思っていましたが、同じタグを持つ 2 つの通知が引き続きポップアップし、2 番目の通知が最初の通知を置き換えるだけです。

通知の生成に使用される関数は次のとおりです。

function randomNotification(whoisit, tagtoPass) {

    var message = whoisit + " is getting a notification";
    var options = {
        body: message,
        icon: 'logo.png',
        tag: tagtoPass,
    }

    var n = new Notification('Website Says:',options);
    setTimeout(n.close.bind(n), 5000);
  }

この関数は、30 秒ごとに Ajax を介して読み込まれる別のスクリプトから呼び出されます。このスクリプトは、データベースをチェックして、12 個のうちの 1 つが通知を必要とする状態にあるかどうかを確認し、関数を呼び出して、その 30 分間隔の名前と一意のタグを渡します。

また、通知APIに関するMozillaの開発者ドキュメントに基づいたこのコードで、通知がOS X通知センターに追加されないことに気付きました。

4

1 に答える 1

2

最後の通知が送信された時刻を格納するために localStorage にフラグを使用することを検討しましたか?

最初の通知を送信した時刻を保存し、それをもう一度チェックして、それが十分に古い場合は、別の通知を送信してそのフラグを更新するとします。

Web ページを更新しても、localStorage のデータは残ります。

例:

localStorage.setItem("last_notification", timestamp)
localStorage.getItem("last_notification")

参照: https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage

于 2017-10-08T01:18:20.930 に答える