From cfcd3aed381ed1924961f13ebbbeb171a1c9be8a Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Sun, 15 Aug 2021 14:25:28 +0900 Subject: Web/API/Push_API を更新 (#1963) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 2021/06/22 時点の英語版に同期 --- files/ja/web/api/push_api/index.html | 59 +++++++++++------------------------- 1 file changed, 18 insertions(+), 41 deletions(-) (limited to 'files/ja/web/api/push_api/index.html') diff --git a/files/ja/web/api/push_api/index.html b/files/ja/web/api/push_api/index.html index 15c7aa781c..295bb675dd 100644 --- a/files/ja/web/api/push_api/index.html +++ b/files/ja/web/api/push_api/index.html @@ -12,66 +12,49 @@ tags: - プッシュ通知 translation_of: Web/API/Push_API --- -
{{DefaultAPISidebar("Push API")}}
+
{{ApiRef("Push API")}}
-

Push API (プッシュ通知 API) は、ウェブアプリケーションがサーバーからメッセージ (プッシュ通知) を受信できるようにします。ウェブアプリケーションがフォアグランド状態かどうか、読み込まれているかどうかに関わらず利用できます。開発者は、オプトインしたユーザーへ非同期の通知と更新を届けることができ、タイムリーな新着コンテンツによってユーザーの関心を得られるでしょう。

+

Push API は、ウェブアプリケーションがサーバーからメッセージ (プッシュ通知) を受信できるようにします。ウェブアプリケーションがフォアグランド状態かどうか、読み込まれているかどうかに関わらず利用できます。開発者は、オプトインしたユーザーへ非同期の通知と更新を届けることができ、タイムリーな新着コンテンツによってユーザーの関心を得られるでしょう。

-

プッシュ通知の概念と使い方

+

プッシュ通知の概念と使い方

-

PushManager への加入を実装する場合、アプリで CSRF/XSRF 問題を起こさないように保護することが非常に重要です。詳しくは以下の記事を参照してください。

+

PushManager へのサブスクリプションを実装する場合、アプリで CSRF/XSRF 問題を起こさないように保護することが非常に重要です。詳しくは以下の記事を参照してください。

-

アプリがプッシュ通知メッセージを受信するために、アプリでサービスワーカーが動作している必要があります。サービスワーカーが動作している時に、 {{domxref("PushManager.subscribe()")}} を利用してプッシュ通知に加入することができます。

- -

これはボタンのクリックなどといったユーザーの操作への応答として行います。例えば以下のようにします。

- -
btn.addEventListener('click', function() {
-  serviceWorkerRegistration.pushManager.subscribe(options)
-  .then(function(pushSubscription) {
-    // handle subscription
-  });
-})
- -

これは単なるベストプラクティスではありません — ユーザーが同意していない通知によってユーザーにスパムを送るべきではありません — が、ブラウザーはユーザーの操作への応答以外で起動される通知を明確に許可しなくなってきています。例えば Firefox は、すでにこれをバージョン72で行っています。

+

アプリがプッシュ通知メッセージを受信するために、アプリでサービスワーカーが動作している必要があります。サービスワーカーが動作している時に、 {{domxref("PushManager.subscribe()")}} を利用してプッシュ通知に加入することができます。

返値の {{domxref("PushSubscription")}} には、プッシュ通知メッセージの配信に必要な情報であるエンドポイントとデータ送信用の暗号キーがすべて含まれています。

プッシュ通知メッセージを受信すると、そのメッセージを扱うためのサービスワーカーが起動します。これは、 {{domxref("ServiceWorkerGlobalScope.onpush")}} イベントハンドラーへ配信されます。これにより、例えば ({{domxref("ServiceWorkerRegistration.showNotification()")}} を使用して) 受信した通知を表示するなど、アプリケーションがプッシュ通知の受信に応じた動作ができます。

-

各サブスクリプションは、サービスワーカーに対して固有です。サブスクリプションのエンドポイントは、固有の capability URL です。サブスクリプションのエンドポイント URL はアプリケーションにメッセージを送るために不可欠な情報です。エンドポイント URL は秘密にしておく必要があります。さもないと、他のアプリケーションがあなたのアプリケーションにプッシュ通知メッセージを送ることができてしまいます。

+

各サブスクリプションは、サービスワーカーに対して固有です。サブスクリプションのエンドポイントは、固有の capability URL です。サブスクリプションのエンドポイント URL はアプリケーションにメッセージを送るために不可欠な情報です。エンドポイント URL は秘密にしておく必要があります。さもないと、他のアプリケーションがあなたのアプリケーションにプッシュ通知メッセージを送ることができてしまいます。

プッシュ通知メッセージの配信のためにサービスワーカーを動作させると、特にバッテリーなどのリソースを消費します。これを扱う方式はブラウザーごとに異なっており、現在標準となる仕組みはありません。 Firefox も Chrome も通知を生成するプッシュ通知メッセージの数に制限を設けていません。 Firefox は通知を表示しないアプリケーションに送信されるプッシュ通知メッセージの数に制限 (クォータ) を設けていますが、 Chrome には制限がありません。この制限数は、ウェブサイトを訪れるたびに更新されます。

-
-

メモ: Gecko 44 以降では、通知の表示中に別のプッシュ通知メッセージが発行された場合、アプリケーションごとのプッシュ通知メッセージ数の上限は、3秒経つまで加算されません。これは、大量のプッシュ通知メッセージを受け取り、そのすべてが表示される通知を生成するわけではない場合に有効です。

-
- -
-

メモ: Chrome バージョン 52 より前のバージョンでは、プッシュ通知メッセージの配信のために Google Cloud Messaging にプロジェクトを作成する必要があり、そのプロジェクト番号と紐付いた API キーをプッシュ通知の配信に利用していました。また、このサービスを利用するには、アプリマニフェストに特別な値を設定する必要があります。

-
- -

インターフェイス

+

インターフェイス

{{domxref("PushEvent")}}
-
{{domxref("ServiceWorker")}} のグローバルスコープ に送られるプッシュアクションを表します。これは、アプリケーションから {{domxref("PushSubscription")}} へ送られる情報を含んでいます。
+
{{domxref("ServiceWorker")}} のグローバルスコープ に送られるプッシュアクションを表します。これは、アプリケーションから {{domxref("PushSubscription")}} へ送られる情報を含んでいます。
{{domxref("PushManager")}}
-
プッシュ通知のリクエスト URL といった、サードパーティのサーバーからプッシュ通知を受け取るための手段を提供します。このインターフェイスは、非推奨になった {{domxref("PushRegistrationManager")}} インターフェイスの機能を置き換えるものです。
+
プッシュ通知のリクエスト URL といった、サードパーティのサーバーからプッシュ通知を受け取るための手段を提供します。
{{domxref("PushMessageData")}}
サーバーから送られたプッシュ情報にアクセスする手段を提供し、受信したデータを操作するメソッドを含みます。
{{domxref("PushSubscription")}}
サブスクリプションのエンドポイント URL を提供し、プッシュサービスから購読を解除できるようにします。
+
{{domxref("PushSubscriptionOptions")}}
+
プッシュサブスクリプションに関連付けられたオプションを表します。
-

サービスワーカーへの追加機能

+

サービスワーカーへの追加機能

-

以下の Service Worker API への追加機能は、 Push API 仕様に含まれています。これらは、プッシュ通知メッセージを使用するためのエントリーポイントを提供するため、および、プッシュとサブスクリプション変更イベントの監視と応答のための追加です。

+

以下の Service Worker API への追加機能は、 Push API 仕様に含まれています。これらは、プッシュ通知メッセージを使用するためのエントリーポイントを提供するため、および、プッシュとサブスクリプション変更イベントの監視と応答のための追加です。

{{domxref("ServiceWorkerRegistration.pushManager")}} {{readonlyinline}}
@@ -82,11 +65,11 @@ translation_of: Web/API/Push_API
{{Event("pushsubscriptionchange")}} イベントが発生する度に発動するイベントハンドラです。例えば、プッシュサブスクリプションが無効になったり、無効になりつつある時 (即ち、プッシュサーバーが有効期限を設定している場合) です。
-

+

Mozilla の ServiceWorker Cookbook は便利なプッシュ通知の例をたくさん揃えています。

-

仕様書

+

仕様書

@@ -105,23 +88,17 @@ translation_of: Web/API/Push_API
-

ブラウザーの互換性

+

ブラウザーの互換性

-

PushEvent

-

{{Compat("api.PushEvent")}}

PushMessageData

-

{{Compat("api.PushMessageData")}}

-
-
-
-

関連情報

+

関連情報