• twitter
  • facebook
  • B!
  • google plus

PRESSRELEASE & BLOGS

2015

03/17

アプリを使わなくてもPush通知が来る!

VASILYでインターンをしている茨木です。


3月9日に発表されたGoogle Chromeの最新ベータ版v42.0.2311.22でPush APIがサポートされニュースになりました。ブラウザからスマホにプッシュ通知が送れるというものです。
スマホ向けウェブサービスをやっている方ならみんな気になるこの機能、早速試してみました。かなりシンプルなので皆さんもぜひ触ってみてください。  



 


以下のサンプルやサイトを参考にしました。


〇サイト
http://updates.html5rocks.com/2015/03/push-notificatons-on-the-open-web


サンプルプログラム
https://github.com/GoogleChrome/samples/tree/gh-pages/push-messaging-and-notifications



実行環境
Windows8.1 (64bit)
Google Chrome 43.0.2327.5 dev-m (64-bit)


必要なもの
SSLサーバー(github.ioなど)
バージョン42以上のGoogle Chrome

(私はhttp://getgooglechromeoffline.net/tag/google-chrome-42-download/から入手しました)


導入手順

・Google Developer Consoleでのプロジェクトの作成 
今回のサンプルではPush通知にGoogleのAPIであるGCM(Google Cloud Messaging)を使うので、まずGoogle Developer Console (https://console.developers.google.com/project)でプロジェクトを作成します。画面にある「プロジェクト作成」をクリックするとモーダルウィンドウが出てくるので、「プロジェクト名」に好きなプロジェクト名を入力、「~利用規約を~同意」にチェックをしてください。プロジェクトIDはそのままで結構です。入力後、「作成」クリックするとプロジェクトが作成されます。


 


プロジェクトを作成すると画面上部にプロジェクトIDとプロジェクト番号が表示されます。今回使うのは「プロジェクト番号」ですので、これをメモしておきます。


 


・APIのkeyの作成
左のメニューで「APIと認証」→「API」と選択します。そうするとAPIの一覧が出てくるので、「Google Cloud Messaging for Android」と「Google Cloud Messaging for Chrome」をONにします。 


 


次に左のメニューで「APIと認証」→「認証情報」と選択し、「新しいキーを作成」をクリックしてください。モーダルウィンドウが出てきたら「サーバー キー」を選択します(間違えると動かないので注意してください)。



次に、許可対象IPアドレスを入力するテキストボックスが出てきますが、入力しなくても大丈夫です。モーダルウィンドウ下の「作成」をクリックすると、keyが生成されます。


 


Keyを生成すると表が出てくるので、その中の「APIキー」をメモしておきます。


 


・サンプルプログラムの設定・アップロード
サンプルプログラムは先ほど取得した「プロジェクト番号」と「APIキー」を設定するだけで動かすことができます。
main.jsの3行目の<YOUR API KEY>にメモしたAPIキーを入力します。


'use strict';

var API_KEY = '<YOUR API KEY>';

var curlCommandDiv = document.querySelector('.js-curl-command');
var isPushEnabled = false;

manifest.jsonの10行目の<YOUR PROJECT NUMBER>にメモしたプロジェクト番号を入力します。


{
  "name": "Push Demo",
  "short_name": "Push Demo",
  "icons": [{
        "src": "images/icon-192x192.png",
        "sizes": "192x192"
      }],
  "start_url": "./index.html?homescreen=1",
  "display": "standalone",
  "gcm_sender_id": "905242668767",
  "gcm_user_visible_only": true
}

設定が終了したら、用意したSSLサーバー(github.ioなど)にhttps://github.com/GoogleChrome/samples/tree/gh-pages/push-messaging-and-notifications内のファイルをアップロードします。


 


・プッシュ通知を登録
index.htmlにアクセスすると、問題なければ「Enable Push Messages」ボタンが有効になっており、これをクリックすると「cURL Command to Send Push」の下にコマンドが出てきます。これがPush通知のPOST送信用のコマンドになるのでコピーしておきます。結構長いですが、これで一つのコマンドです。上手く行かない場合は、ブラウザのバージョンを確認してください。


 


コピーしたコマンドをコマンドラインに貼り付け、実行します。成功した場合には


{"multicast_id":<数字>,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"<数字>"}]}


と表示され右下にプッシュ通知が表示されます。


Androidの場合も、端末のChromeから同様の手順でコマンドを取得するところまで行ってください。それから取得したコマンドをPCに移して実行することでPush通知を実現できます。Androidの場合もやはりGoogle Chromeのバージョンは42以降が必要ですので、注意して下さい。


〇簡単な説明


main.jsはロード時、serviceWorker.registerでサーバー上のservice-worker.jsをService Workerとして登録します。そして、ボタンが押された場合に関数subscribe内のserviceWorkerRegistration.pushManager.subscribe()でsubscriptionの登録を行い、そのsubscriptionとAPI Keyを用いてcURLのコマンドを生成しています。


あとは、サーバー上でcURLを実行してpushサーバにPOST送信することで、登録を行った端末にPush通知が送られます。


〇問題点
・現状ではPOST送信する側からメッセージなどのデータを送れず、service-worker.js内に予め書いたstaticなメッセージしか通知できません。仕様にはデータの送信も含まれているので、今後の実装が期待されます。
・Google Cloud Messaging for Chromeは個人の場合10000リクエスト/日の制限があります。


〇備考
・このサンプルではindex.htmlでAPIkeyの設定が必要ですが、それはコマンドの生成の為であり、クライアントサイドへのAPIkeyの記述は本来不要です。
・subscriptionIdは署名が行われる毎(「Enable Push Messages」のクリック毎)に発行されます。当然クライアントごとに異なります。
・サーバーサイドでservice-worker.jsを書き換えても、クライアントサイドのservice-worker.jsにはすぐには反映されません。ですので、service-worker.js を書き換えてメッセージを更新、といった使い方は難しいです。



VASILYではインターン生を募集しています。
ちょっとでも気になった方は是非一度来てみてください!
https://fresh2016.vasily.jp/

niba.

This article was posted
by niba .

新着記事を読む

DEVELOPERS BLOG

# DEVELOPERS BLOG

RECENT POSTS

POPULAR POSTS

CATEGORY

MONTHLY ARCHIVE