0

複数の通知を同時に表示しないようにChrome拡張機能を停止する方法がわかりません。現在のところ、拡張機能を使用すると、最大5回のアラーム時刻を設定できるため、一般的な通知が表示されます。chrome extension - 複数の通知が同時に表示されないようにする

複数のアラームを設定してからMacをスリープ状態にすると問題が発生します。アラーム時間が経過し、さらに10-20秒後にコンピュータがスリープ状態になると、すべての通知が同時に画面に表示されます。

コンソールには、これらの通知がミリ秒たとえ1分間隔で警報が発せられていたとしても、互いに繋がっていました。

screenshot of console log

私は新しい通知を表示する前に保留されている優秀な通知をクリアして、いくつかの簡単なコードを書いてきましたが、このコードは、コンピュータが眠っていたとき、この特殊なケースを停止しません。 (それは同時に通知がユーザーがフルスクリーンは、他のアプリケーションであり、Chromeに戻ったときのように、遡及的に登場し、他の状況のた​​めに働くん。)ここで

が「保留中」の通知を削除するために私のコードです:

chrome.notifications.getAll(function(notifications) { 
    // clear out any notifications already pending so there's no dupes! 
    Object.keys(notifications).forEach(function(notificationID) { 
    console.log("clearing notification ID: " + notificationID); 
    chrome.notifications.clear(notificationID); 
    }); 
}); 

私はクロームがどのように通知とアラームをバックグラウンドで処理しているのか分かりません。通知が同時に表示されないようにする方法については、どのような助けもあります。

+0

チェックした場合と表示されません。期限切れの場合は何でも。 – wOxxOm

+0

しかし、期待される行動は何ですか?あなたは通知を表示したくない、まったく通知したくないのですか? – Hosar

+0

予想される動作は、重複を排除した1つの通知の表示に過ぎません。 @wOxxOm、チップのおかげで、私はonAlarmのコールバックを見て、それが動作するかどうかを確認します! Hosar、あなたの質問が正しいかもしれません。少なくとも1つの通知が表示されるように、調整する必要があるかもしれません。 – bthorn

答えて

0

ありがとう@wOxxOm、うまくいった!

私が正しく動作するための比較を取得するには、元のアラーム時刻に数秒を追加する必要がありました:アラーム時刻は、アラーム時のコールバックの現在時刻よりも少ない

chrome.alarms.onAlarm.addListener(function(alarm) { 
    var currentTime = (new Date).getTime(); 
    var alarmTimePlus = alarm.scheduledTime + 2000 
    if (alarmTimePlus > currentTime) { 
    showNotification(); // custom function that runs chrome.notifications.create 
    } 
}); 
関連する問題