通知オプションは 2 つのセクションに分かれており、1 つは視覚的な要素(ここでは セクション内)、通知の動作面について説明するもの(次のセクション)があります。
さまざまなプラットフォームのさまざまなブラウザで、さまざまな通知オプションを試すことができます Peter Beverloo の 通知生成ツール。
ビジュアル オプション
通知を表示するための API はシンプルです。
<ServiceWorkerRegistration>.showNotification(<title>, <options>);
title
と options
の両方の引数は省略可能です。
タイトルは文字列で、オプションには以下のいずれかを指定できます。
{
"//": "Visual Options",
"body": "<String>",
"icon": "<URL String>",
"image": "<URL String>",
"badge": "<URL String>",
"dir": "<String of 'auto' | 'ltr' | 'rtl'>",
"timestamp": "<Long>"
"//": "Both visual & behavioral options",
"actions": "<Array of Strings>",
"data": "<Anything>",
"//": "Behavioral Options",
"tag": "<String>",
"requireInteraction": "<boolean>",
"renotify": "<Boolean>",
"vibrate": "<Array of Integers>",
"sound": "<URL String>",
"silent": "<Boolean>",
}
ビジュアル オプションを見てみましょう。
タイトルと本文のオプション
Windows 版 Chrome で、タイトルとオプションがない場合の通知は次のように表示されます。
ご覧のとおり、ブラウザ名がタイトルと「新しい通知」として使用されます。プレースホルダ: 使用されます。
プログレッシブ ウェブ アプリケーションがデバイスにインストールされている場合は、代わりにウェブアプリ名が使用されます 次のブラウザ名を使用します。
次のコードを実行したとします。
const title = 'Simple Title';
const options = {
body: 'Simple piece of body text.\nSecond line of body text :)',
};
registration.showNotification(title, options);
Linux 版 Chrome では次の通知が表示されます。
Linux の Firefox では、次のようになります。
タイトルと本文に多くのテキストを含む通知は、上の Chrome でこのように表示されます。 Linux:
Linux の Firefox では、通知にカーソルを合わせるまで本文テキストが折りたたまれるため、 展開すると、
Windows 上の Firefox でも、同じ通知は次のように表示されます。
ご覧のとおり、ブラウザによって同じ通知の表示が異なる場合があります。また、 同じブラウザでもプラットフォームごとに異なる
Chrome と Firefox は、システム通知と通知センターを使用します。 使用できます。
たとえば、macOS のシステム通知は、画像とアクション(ボタンとインライン 。
Chrome には、すべてのデスクトップ プラットフォーム向けのカスタム通知もあります。有効にするには、Terraform で
chrome://flags/#enable-system-notifications
フラグを Disabled
状態にします。
アイコン
icon
オプションは基本的に、タイトルと本文の横に表示できる小さな画像です。
コードの中で、読み込む画像の URL を指定する必要があります。
const title = 'Icon Notification';
const options = {
icon: '/images/demos/icon-512x512.png',
};
registration.showNotification(title, options);
Linux 版 Chrome では、この通知が表示されます。
Linux の Firefox の場合:
残念ながら、アイコンに使用する画像のサイズについて確かなガイドラインはありません。
Android が 64 dp の画像を必要としているようである (64 ピクセルにデバイスのピクセル比の倍数)。
デバイスの最大ピクセル比を 3 と仮定すると、192 ピクセル以上のアイコンサイズは 間違いありません。
バッジ
badge
は小さなモノクロ アイコンで、ユーザーにもう少し情報を表示する
通知の送信元についてユーザーに知らせます。
const title = 'Badge Notification';
const options = {
badge: '/images/demos/badge-128x128.png',
};
registration.showNotification(title, options);
現時点では、バッジは Android 版 Chrome でのみ使用されます。
その他のブラウザ(またはバッジなしの Chrome)では、ブラウザのアイコンが表示されます。
icon
オプションと同様に、使用するサイズに関する実際のガイドラインはありません。
Android のガイドラインを詳しく調べる 推奨サイズは 24 ピクセルにデバイスのピクセル比を掛けたものです。
つまり、72 ピクセル以上の画像であれば問題ありません(デバイスの最大ピクセル比が 3 の場合)。
画像
image
オプションを使用すると、ユーザーに大きな画像を表示できます。これは特に
ユーザーにプレビュー画像を表示するのに便利です。
const title = 'Image Notification';
const options = {
image: '/images/demos/unsplash-farzad-nazifi-1600x1100.jpg',
};
registration.showNotification(title, options);
Linux 版 Chrome では、通知は次のようになります。
Android 版 Chrome では、切り抜きとアスペクト比が異なります。
パソコンとモバイルの比率の違いから、提案を行うことは極めて困難です。 確認してください。
パソコンの Chrome はスペースを埋めるわけではなく、アスペクト比は 4:3 であるため、おそらく最適な
この比率で画像を配信し、Android で画像を切り抜くというものです。とはいえ、
image
オプションは変更される可能性があります。
Android については、ガイドラインは 450 dp にする。
このガイドラインを使用すると、幅 1, 350 ピクセル以上の画像が適しています。
アクション(ボタン)
通知付きのボタンを表示するように actions
を定義できます。
const title = 'Actions Notification';
const options = {
actions: [
{
action: 'coffee-action',
type: 'button',
title: 'Coffee',
icon: '/images/demos/action-1-128x128.png',
},
{
action: 'doughnut-action',
type: 'button',
title: 'Doughnut',
icon: '/images/demos/action-2-128x128.png',
},
{
action: 'gramophone-action',
type: 'button',
title: 'Gramophone',
icon: '/images/demos/action-3-128x128.png',
},
{
action: 'atom-action',
type: 'button',
title: 'Atom',
icon: '/images/demos/action-4-128x128.png',
},
],
};
registration.showNotification(title, options);
アクションごとに、title
、action
(基本的には ID)、icon
、
type
。タイトルとアイコンは通知に表示されます。この ID は、サービス アカウントを
アクション ボタンがクリックされたことを示します(詳細については次のセクションで説明します)。タイプ
'button'
がデフォルト値であるため、省略できます。
このドキュメントの作成時点では、アクションをサポートしているのは Android 版 Chrome と Opera のみです。
上記の例では、4 つのアクションが定義されています。これは、1 つよりも多くのアクションを定義できることを示しています。
表示されます。ブラウザに表示されるアクションの数については、
window.Notification?.maxActions
を確認できます。
const maxVisibleActions = window.Notification?.maxActions;
if (maxVisibleActions) {
options.body = `Up to ${maxVisibleActions} notification actions can be displayed.`;
} else {
options.body = 'Notification actions are not supported.';
}
パソコンの場合、操作ボタンのアイコンは色で表示されます(ピンクのドーナツ)。
Android 6 以前では、アイコンの色はシステムのカラーパターンに合わせて調整されています。
Android 7 以降では、アクション アイコンがまったく表示されません。
パソコンでの Chrome の動作は、Android に合わせて変更されることが予想されます(つまり、
適切なカラーパターンを使用して、アイコンがシステムのデザインに一致するようにします)。それまでの間、
アイコンの色を #333333
にすることで、Chrome のテキストの色に合わせることができます。
また、Android ではアイコンが鮮明に見えますが、パソコンでは見えません。
パソコンの Chrome で使える最適なサイズは 24px x 24px です。ひどく不自然に見える 。
この違いから得られるベスト プラクティスは次のとおりです。
- アイコンのカラーパターンに一貫性を持たせ、少なくともすべてのアイコンに一貫性を持たせる 表示されます。
- プラットフォームによってはモノクロで表示される場合があります。モノクロで表示されるようにしてください。
- サイズをテストして、どれが最適かを確認します。128px × 128px は Android では問題ありませんが、低調でした 高画質です。
- アクション アイコンがまったく表示されないことが予想されます。
通知の仕様では複数のサイズのアイコンを定義する方法を検討していますが、 ある程度の時間が必要です
アクション(インライン返信)
通知にインライン リプライを追加するには、'text'
タイプでアクションを定義します。
const title = 'Alexey Rodionov';
const options = {
body: 'How are you doing? )',
image: '/images/demos/avatar-512x512.jpg',
icon: '/images/demos/icon-512x512.png',
badge: '/images/demos/badge-128x128.png',
actions: [
{
action: 'reply',
type: 'text',
title: 'Reply',
icon: '/images/demos/action-5-128x128.png',
}
],
};
registration.showNotification(title, options);
Android では次のように表示されます。
アクション ボタンをクリックすると、テキスト入力フィールドが開きます。
テキスト入力フィールドのプレースホルダをカスタマイズできます。
const title = 'Alexey Rodionov';
const options = {
body: 'How are you doing? )',
icon: '/images/demos/avatar-512x512.jpg',
badge: '/images/demos/badge-128x128.png',
actions: [
{
action: 'reply',
type: 'text',
title: 'Reply',
icon: '/images/demos/action-5-128x128.png',
placeholder: 'Type text here',
}
],
};
registration.showNotification(title, options);
Windows 版 Chrome では、アクションをクリックしなくてもテキスト入力フィールドが常に表示される ボタン:
複数のインライン返信を追加したり、ボタンとインライン返信を組み合わせたりすることができます。
const title = 'Poll';
const options = {
body: 'Do you like this photo?',
image: '/images/demos/cat-image.jpg',
icon: '/images/demos/icon-512x512.png',
badge: '/images/demos/badge-128x128.png',
actions: [
{
action: 'yes',
type: 'button',
title: '👍 Yes',
},
{
action: 'no',
type: 'text',
title: '👎 No (explain why)',
placeholder: 'Type your explanation here',
},
],
};
registration.showNotification(title, options);
方向
dir
パラメータを使用すると、テキストを表示する方向を定義できます。
割り当てられています
テストでは、方向はこれではなくテキストによって主に決まるようでした パラメータを指定します。仕様上、これはオプションをレイアウトする方法をブラウザに提案することを目的としています。 違いは見られませんでした
可能であれば、それを定義するのが最善です。そうでなければ、ブラウザは 返されます。
パラメータは auto
、ltr
、rtl
のいずれかに設定する必要があります。
Linux 版 Chrome で使用される右から左に表記する言語は次のようになります。
Firefox の場合は(カーソルを合わせているとき)次のように表示されます。
バイブレーション
バイブレーション オプションを使用すると、通知のバイブレーションのパターンを定義できます。 ユーザーの現在の設定でバイブレーションが許可されていることを前提とします(つまり、デバイスが サイレント モード。
バイブレーション オプションの形式は、数字、 ミリ秒でデバイスが振動し、その後に、デバイスが振動するミリ秒数 バイブレーションは設定しません。
const title = 'Vibrate Notification';
const options = {
// Star Wars shamelessly taken from the awesome Peter Beverloo
// https://tests.peter.sh/notification-generator/
vibrate: [
500, 110, 500, 110, 450, 110, 200, 110, 170, 40, 450, 110, 200, 110, 170,
40, 500,
],
};
registration.showNotification(title, options);
これは、バイブレーションをサポートするデバイスにのみ影響します。
音
サウンド パラメータを使用すると、通知を受信したときに再生する音を定義できます。
現時点では、このオプションをサポートしているブラウザはありません。
const title = 'Sound Notification';
const options = {
sound: '/demos/notification-examples/audio/notification-sound.mp3',
};
registration.showNotification(title, options);
タイムスタンプ
タイムスタンプにより、プッシュにつながったイベントが発生した時刻をプラットフォームに通知できる 通知が送信されます。
timestamp
は 00:00:00 UTC(1970 年 1 月 1 日)からのミリ秒数である必要があります。
(UNIX エポック)を使用します。
const title = 'Timestamp Notification';
const options = {
body: 'Timestamp is set to "01 Jan 2000 00:00:00".',
timestamp: Date.parse('01 Jan 2000 00:00:00'),
};
registration.showNotification(title, options);
UX のベスト プラクティス
通知に関する UX における最大の失敗は、情報に具体的な情報が欠けていることです。 表示されます。
そもそもなぜプッシュ メッセージを送信したのかを検討し、メッセージに 通知オプションは、ユーザーがその通知を読んでいる理由を理解するために使用されます。
正直に言うと、例を見ると「決して間違えることはない」と考えるのは簡単です。しかし、 その罠にはまってしまう可能性があります
注意点:
- タイトルや本文にウェブサイトを含めないでください。ブラウザでは、ドメイン名が 重複しないようにしてください。
- 持っている情報をすべて活用します。誰かがプッシュ メッセージを送信した場合、 「New Message」というタイトルを使用せずに、ユーザーにメッセージを送信したおよび本文です。 読む」ものです「太郎さんが新しいメッセージを送信しました」というタイトルを使用する通知の本文を メッセージの一部になります。
ブラウザと機能の検出
執筆時点では、Chrome と Firefox ではユーザーの サポートしています。
幸いなことに、通知機能のサポートは window.Notification
説明します。
通知が操作ボタンをサポートしているかどうかを確認する場合は、次のようにします。
if ('actions' in window.Notification?.prototype) {
// Action buttons are supported.
} else {
// Action buttons are NOT supported.
}
これにより、ユーザーに表示する通知を変更できます。
他のオプションを使用する場合は、上記と同じように、'actions'
を目的のオプションに置き換えます。
パラメータ名を指定します。
次のステップ
- ウェブのプッシュ通知の概要
- Push の仕組み
- ユーザーを登録する
- 権限の UX
- ウェブプッシュ ライブラリを使用したメッセージの送信
- ウェブプッシュ プロトコル
- push イベントの処理
- 通知の表示
- 通知の動作
- 一般的な通知パターン
- プッシュ通知に関するよくある質問
- 一般的な問題とバグの報告