
目次
ウェブプッシュの実装方法
ウェブサイトへプッシュ通知を実装し、プッシュトークンを得るための実装方法をご紹介します。
ウェブプッシュの有効化においては対応ブラウザの判定や通知設定の許可といった様々な処理が必要となりますが、ここではBoltzEngine用のプッシュ通知有効化ライブラリを使用した方法をご紹介します。(このライブラリは近日中に一般公開する予定です)
サーバー側の要件
ウェブプッシュを有効化するウェブページは https で配信されている必要があります。ドメイン・サーバー証明書を準備し、適切にサーバーをセットアップしてください。
サーバー暗号鍵の作成
サーバー・ブラウザ間の通信を暗号化する暗号鍵ペアを作成します。この作業は openssl コマンドを使用して次のように作成することができます。
|
|
以下の4つのファイルが得られます。public_key.txt
の内容はこの後フロントエンドの組み込み時に使用します。private_key.txt
の内容は配信側の設定時に必要となります。
- vapid_private.pem
- vapid_public.pem
- public_key.txt
- private_key.txt
これらのファイルは大切に保管してください。また、秘密鍵にあたるファイル(vapid_private.pem
, private_key.txt
)が漏洩しないように注意してください。
Service Workerの設置
プッシュ受信時の処理を記述したService Workerスクリプトを配置します。このスクリプトは表示される画面よりも上のディレクトリに配置する必要があります。例えば、https://example.com/sample/page.html
で使用したい場合、以下のような関係になります。
設置先URL | 設置可否 |
---|---|
https://example.com/serviceworker.js |
OK (上のディレクトリにある) |
https://example.com/sample/serviceworker.js |
OK (同じディレクトリにある) |
https://example.com/sample/js/serviceworker.js |
NG (下のディレクトリにある) |
https://example.com/js/serviceworker.js |
NG (異なるディレクトリにある) |
Service Workerスクリプトでは、プッシュ到達時にpushイベントが呼び出されます。ここでWeb Notifications APIを使って通知を表示します。一般的に以下のようなスクリプトを記述します。
|
|
BoltzEngine WebPush Token Library の取得
BoltzEngine WebPush Token Library はウェブプッシュの有効化処理をし、BoltzEngine形式ウェブプッシュトークンを取得するためのブラウザ向けJavaScriptライブラリです。
このライブラリは BoltzMessenger Web のパッケージに含まれています。boltz-messenger-web.zip
の web/webroot/js/boltzwebtokens.js
を適切な場所へコピーし、script タグで読み込ませてください。
※近日中に一般公開を予定しております。
BoltzEngine 形式ウェブプッシュトークン
ウェブプッシュの送信に必要な情報はサブスクリプションエンドポイント、ブラウザ公開鍵、乱数の3種類が必要ですが、BoltzEngine ではこれらを他のトークンと同じように1つの文字列として管理できるようJSON形式で表現した文字列を「ウェブプッシュトークン」として扱います。
BoltzEngine WebPush Token Library は取得したウェブプッシュ用の情報をこの形式にフォーマットします。
|
|
このJSONのキーは以下の通りです。キーの並びは必ず以下の順番である必要があります。
順番 | キー | 内容 |
---|---|---|
1 | v | バージョン (1 で固定) |
2 | endpoint | サブスクリプションエンドポイントURL |
3 | p256dh | ブラウザ公開鍵 |
4 | auth | Authentication Secret |
BoltzEngine WebPush Token Library の組み込み
boltzwebtokens.js
を組み込んだページでは BoltzWebTokens
クラスが使用できるようになります。主な使い方を以下に示します。
初期化処理
BoltzWebTokens
クラスのインスタンス作成時は、サーバー公開鍵(public_key.txt
の内容)、Service WorkerのURL、ウェブプッシュ利用可能ブラウザで開いた時の処理(function)、ウェブプッシュ利用不可ブラウザで開いたときの処理(function)を引数で渡します。
ウェブプッシュ利用可能ブラウザで開いた時は、その中で更に状態を分岐し、適切なページになるようにスクリプトを記述してください。
|
|
有効化処理
ウェブプッシュ利用可能ブラウザでユーザーに許可を求める場合、activate
メソッドを呼び出します。引数には許可時の処理(function)、不許可・失敗時の処理(function)を記述します。
|
|
トークンの更新に備えて
ウェブプッシュトークンは一定期間で無効になったり更新される場合があります。
また、サーバー暗号鍵の作成の項目で作成した秘密鍵ファイルは漏洩しないように管理する必要がありますが、万一漏洩した場合は再発行が必要となります。再発行した場合、これまでのウェブプッシュトークンは使用できなくなってしまいます。
このため、フロントエンドの JavaScript でアクセスする度に最後に登録したトークンと一致しない場合はサーバーに再登録をする仕組みを作っておくなどの対策が必要となります。