通知(Notification API)
Notification requestPermission ServiceWorker通知
ブラウザのシステム通知(デスクトップ通知)を表示します。ユーザーの許可が必要です。
デモ:ブラウザ通知
現在の通知許可:⚠️ 未決定
コード例
js
// 許可リクエスト(ユーザーの操作に対して呼ぶ)
const permission = await Notification.requestPermission();
// "granted" | "denied" | "default"
if (permission === 'granted') {
// シンプルな通知
const n = new Notification('タイトル', {
body: '通知の本文',
icon: '/icon.png', // 通知アイコン
badge: '/badge.png', // バッジアイコン(モバイル)
image: '/image.png', // 大きい画像
tag: 'unique-tag', // 同じタグは置き換え
requireInteraction: true, // 自動で消えない
silent: false, // 音を鳴らすか
data: { url: '/page' }, // カスタムデータ
});
// イベント
n.onclick = (e) => {
window.focus();
e.target.close();
};
n.onclose = () => console.log('通知が閉じられた');
n.onerror = (e) => console.error('通知エラー:', e);
// 手動で閉じる
setTimeout(() => n.close(), 5000);
}
// Service Worker 経由の通知(バックグラウンドでも動く)
const reg = await navigator.serviceWorker.ready;
await reg.showNotification('プッシュ通知', {
body: 'バックグラウンドからの通知',
actions: [
{ action: 'open', title: '開く' },
{ action: 'dismiss', title: '閉じる' },
],
});比較:Notification API vs Service Worker通知
| 観点 | Notification API | Service Worker通知 |
|---|---|---|
| バックグラウンド動作 | ❌ ページが開いている時のみ | ✅ ページが閉じていても可 |
| アクションボタン | ❌ なし | ✅ 複数のアクション |
| 用途 | インページ通知 | プッシュ通知(PWA) |
🤖 AIプロンプトテンプレート
実装内容: ブラウザ通知(Notification API)を使った通知機能 技術: React hooks(useState, useEffect) 要件: - Notification.requestPermission() でユーザーに通知許可をリクエストする - 許可状態(granted / denied / default)を表示する - ボタンクリックで new Notification() を使ってデスクトップ通知を表示する - 通知のタイトル・本文・アイコンを設定できるようにする - 通知クリック時にコールバックを実行する ユースケース: ニュースサイトの新着記事通知、タスク管理アプリのリマインダー通知
⚠️ このプロンプトはあくまでたたき台です。AIの回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。