勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

Push.jsを用いてプッシュ通知を実装&Web Audio APIで通知音も鳴らす方法

   2024/03/13  JavaScript

プッシュ通知(デスクトップ通知)を実装してみたい。また、通知の際は分かりやすいように通知音を鳴らしたい。通知自体はPush.jsというライブラリを、通知音はWeb Audio APIというJavaScriptのAPIで対応できた。以下に対応方法をメモ。

 

サンプル

https://taitan916.info/sample/push/

clickボタンを押すと通知が表示され、通知音が鳴る。

 

ソース

<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>プッシュ通知テスト</title>
</head>
<body>

	<input type="button" value="click" id="push-btn">

	<script type="text/javascript" src="//code.jquery.com/jquery-3.5.1.js"></script>
	<script src="https://cdnjs.cloudflare.com/ajax/libs/push.js/1.0.12/push.min.js"></script>
	<script type="text/javascript">
		$(function(){
			$('#push-btn').click(function(){
				Push.create('タイトル', 
					{
						body: '本文',
						timeout: 5000,
					}
				);

				//webオーディオAPIコンテキストを生成
				const audioCtx = new (window.AudioContext || window.webkitAudioContext)();

				//オシレーターノードを生成
				const oscillator = audioCtx.createOscillator();

				//ゲインの生成
				const gainNode = audioCtx.createGain();

				//webオーディオAPIコンテキストと接続?(ここがよく分からない)
				oscillator.connect(gainNode);
				gainNode.connect(audioCtx.destination);

				//音量
				gainNode.gain.value = 0.2;

				//通知音のタイプ
				oscillator.type = 'sine';

				//通知音スタート
				oscillator.start();

				//通知音ストップ
				oscillator.stop(0.2);
			});
		});

	</script>
</body>
</html>

 

Push.js

以下が公式サイトになり、オプション等リファレンスが確認できる。

https://pushjs.org/

尚、対応ブラウザに関して公式サイトではそのような案内を見つけられなかったが、とあるサイトにて「Chrome / Safari / Firefox / Edge」が対応、「iOSやIE」が非対応という情報を見かけた。

 

Web Audio API

以下がリファレンスとなる。

https://developer.mozilla.org/ja/docs/Web/API/Web_Audio_API

 

所感

mp3とかの音声ファイルを用意せずともブラウザ上で音声を流せるWeb Audio APIに衝撃を受けた。それなりに汎用性が高そう。

 - JavaScript

  関連記事

JavaScriptのマップ用ライブラリ「MapLibre GL JS」の利用方法

あるサイトをWappalyzerで調査していた際に「MapLibre GL JS ...

jQueryプラグインでクリップボードにコピーする方法(clipboard.js)

ページ上のボタンをクリックすることで特定の文章をクリップボードにコピーしたかった ...

バニラJS対応(jQuery非依存)の画像遅延読み込みプラグイン「echo.js」の利用方法

あるサイトをブラウザの開発者ツールで見ていると「echo.js」と聞いたことの無 ...

サイトをダークモード対応させる「Darkmode.js」ライブラリの利用方法

サイトをダークモード対応させる場合、CSSで色々指定しないといけないと思っていた ...

jQueryの通知メッセージ用ライブラリ「Toastr」の利用方法

あるサイトのソースコードを拝見しているとToastrというJSファイルをCDNで ...