Firefox の通知機能と戯れる (Push API)

Firefox の通知機能と戯れる (Push API)

Clock Icon2016.01.29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

000

車輪開発大好きおたいがです。こんにちは。( 挨拶 )

先日… 2016 年 1 月 26 日 ( 火 ) に Firefox 44 正式版がリリースされ、ウェブサイトからプッシュ通知を受け取れることが話題になりました。これを機に、今まで触れたことのなかった Push API について簡単にまとめてみました。

お手本サイト

「とりあえず動作が確認できるサイトを見たい / 知りたい」という方は、Service Worker Cookbook の Web Push 項目を Firefox または Google Chrome で見れば、数種類のサンプルの動作を確認することができます。

001

実装難易度 ( Beginner, Intermediate, Advanced ) ごとにサンプル項目が用意されています。( デモ、コード付き )

Service Worker Cookbook
https://serviceworke.rs/

ローカル動作環境の構築

手元のローカル端末でプッシュ通知環境を構築する手段を紹介します。ひと通りの手順は MDNUsing the Push API にまとめられていますが、この中から必要な項目を抜粋しています。

必要なもの

最低限、以下のものをインストールしておく必要があります。また Node.js は、使用する web-push モジュールが Promise を使用しているため、ES6 をサポートしたバージョンを用意する必要があります。私は LTS の 4 系を使用しました。

  • Git
  • Node.js ( ES6 対応版 )

push-api-demo リポジトリのクローン

$ git clone https://github.com/chrisdavidmills/push-api-demo.git

web-push モジュールのインストール

$ npm install web-push

以上で支度は完了です。

動作確認

プッシュサーバ起動

$ node server

セキュリティ例外の追加

プッシュサーバの屋台骨となっている Service Worker は HTTPS が必須なため、デモをローカル環境で動作させるためにセキュリティ例外を承認する必要があります。

Firefox で https://127.0.0.1:7000 を開き、セキュリティ例外を承認します。

002

003

同様に push-api-demo の Web ページも HTTPS で開く必要があるため、こちらもセキュリティ例外を追加します。

004

005

( 本記事では IntelliJ IDEA のビルドイン Web サーバを使用しています )

デモサイトを立ち上げて "Subscribe to Push Messaging" と書かれたボタンを押すと…通知来ました!

006

あとは自由にコードを弄って遊ぶのみ…です。お楽しみあれ。

参考

Push API - Web APIs | MDN
https://developer.mozilla.org/en-US/docs/Web/API/Push_API

Using the Push API - Web API インターフェイス | MDN
https://developer.mozilla.org/ja/docs/Web/API/Push_API/Using_the_Push_API

Push Notifications on the Open Web | Web Updates - Google Developers
https://developers.google.com/web/updates/2015/03/push-notifications-on-the-open-web

Service Worker の紹介: Service Worker の使い方 - HTML5 Rocks
http://www.html5rocks.com/ja/tutorials/service-worker/introduction/

Windows でツールを使わず Node.js の複数バージョンを共存させる
http://qiita.com/rch850/items/f8d42ed3cb7d600520db

Service Worker Cookbook
https://serviceworke.rs/

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.