Chrome の Web プッシュ API の実装に関するドキュメントを読んでいると、API に「プッシュを受信するたびに通知を表示することを約束する」と書かれていることに気付きました。プッシュメッセージを受け取ります。」
この例をローカルホストに実装した後、cURL を使用してプッシュ通知を正常に送信しました。興味があったので、実際に showNotification 関数を呼び出している行をコメントアウトし、代わりに console.log を挿入したところ、プッシュ通知を実際に送信、受信、および完全に無視できることがわかりました。メインページから制御したグローバルブール値に基づいてそれらを表示するかどうかを制御するために if ステートメントを使用してみましたが、うまくいきました。では、通知を表示する必要があり、サイレント プッシュ通知が利用できないと言う意味を知っている人がいるかどうか疑問に思っていました。
これは単なる目的ではありません。Web アプリでこれらの通知を表示するかどうかを合法的に制御する必要がある可能性があるため、これが実際に可能であれば素晴らしいことです。興味がある場合は、以下のコードを参照してください。
self.addEventListener('push', function(event) {
var title = 'New Message';
var body = 'You have received a new message!';
var icon = '/img/favicon.png';
var tag = 'well-notification';
console.log("DID RECEIVE NOTIFICATION")
if(settingsShowNotification) {
event.waitUntil(
self.registration.showNotification(title, {
body: body,
icon: icon,
tag: tag
})
);
}
});
編集: 関連する場合は、Chrome 47 で。
更新: さらに実験した結果、ユーザーが移動してから同じページに再度移動すると、元のグローバル変数を更新できないという明らかな問題が見つかりました。ただし、サービスワーカー自体の変数を使用してこれを回避し、ここで説明する API を使用してメッセージをサービスワーカーに送信し、showNotifications ブール値を切り替えることができました。