ひとりぶろぐ

価値ある情報をユーザー視点で発信するブログ

実は汎用性に富んだWebプッシュ通知サービスPush7

ブログやWebサイトの更新をプッシュ通知で知らせるためのWebサービス、Push7が最近人気を集めていますね。

Push7は最近のWebブラウザが持っているプッシュ通知の機構や、スマートフォンのプッシュ通知の機構(Android / iOS両対応)に対応していて、家でも外でもプッシュ通知を受信してもらえる環境を提供してくれます。

  • iOS
  • Android
    • Chrome(Android用のPush7アプリがあるわけではない)
  • Webブラウザ
    • Chrome、Firefox(Safariは現時点では未対応)

これまでも任意のプッシュ通知を送るためのAPIを提供するサービスはありましたが、1対1の通知しか送れず、自分自身のために送るプッシュ通知という利用形態に限られました。

しかも、スマートフォン用のクライアントの多くは有料でした。

Push7は購読してくれた人全員にプッシュ通知を送ることができる1対多のサービスであるところが画期的です。それでいて無料で使えるのですから素晴らしいものです。

Push7 figure 01

ブログを運営していれば、興味を惹かれるサービスであるのは間違いありません。

弊ブログも遅ればせながらPush7対応をしてみました。ぜひ購読をお願い致します。


WordPress用のプラグインがあるので、WordPressなら導入は簡単です。ちなみに、こちらの環境(sixcore)ではSSLの「SSLの検証を無効化する」で「する(必要のない場合には選択しないでください。)」を選択しないとプッシュ通知が送られませんでした。

Push7 figure 04

ただ、公式のWordPress用プラグインを導入すると、最初の公開時はもちろんのこと、更新毎にプッシュ通知が送られるので、修正が多い人だとちょっと恥ずかしいかもしれませんし、月5,000回に定められた送信回数を使い切ってしまいそうです。

Push7は何もブログやWebサイトの更新のためだけにしか使えないわけではありません。

Push7は「Webサイト運営者のための」と前置きがありますが、その実、不特定多数の人に知らせたいことを送信するために汎用的に使えるメッセージングサービスです。

「更新通知」にとらわれない利用を考えたいところです。

Push7へのアプリケーション登録と制約

Push7を利用開始するには、アカウントを取得してアプリケーションを登録するところから始めます。

一つのアプリケーションにつき、月5,000回のプッシュ送信に限られるという制約があります。

アプリケーションは複数登録することができ、4つまでの登録を確認しました。これ以上も登録が可能のようです。

Push7 figure 02

プッシュ送信月5,000回の制約はアプリケーションごとに別勘定なので、4つ登録すれば合計20,000回プッシュ送信できることになります。

複数のアプリケーションを購読してもらうことのハードルは高そうですが、制約は簡単に突破できますね。

登録したアプリケーションをだれにも公開せずにおけば、在来のプッシュ通知アプリのように、自分のためにだけに使うこともできます。

APIの利用

Push7にはAPIがあり、これを通して利用することができます。

現状、APIは二つあります。利用状況を確認するHead APIと、プッシュ通知を送信するためのSend API。

  • Head API(アプリケーションの各種データをログインしていない状態で取り出すAPI)
  • Send API(プッシュ通知を購読者全員に送信するAPI)

Head APIの利用は、URLを組み立ててアクセスするだけ。

https://api.push7.jp/api/v1/[APPNO]/head

URLの途中に[APPNO]がありますが、これはPush7に登録したアプリケーションのアプリケーション設定から取得が可能です。

  • 登録アプリケーション > アプリケーション設定 > 自動プッシュ設定 > WordPress

Push7 figure 03

ひとりぶろぐのAPPNOは b12ed56a2b1642febc36c4c6cd1a0313 なので、アクセスすべきURLは以下のようになります。

https://api.push7.jp/api/v1/b12ed56a2b1642febc36c4c6cd1a0313/head

APPNOは購読ボタンなどで公開されているので、Head APIはだれでも参照が可能です。

Send APIの方はPOSTメソッドでアクセスすることになるので、Rubyで試してみました。

Push7のSend APIをRubyから利用する

Send APIのエンドポイントは以下。

https://api.push7.jp/api/v1/[APPNO]/send

[APPNO]の部分は、Push7のダッシュボード「登録アプリケーション > アプリケーション設定 > 自動プッシュ設定 > WordPress」で取得したAPPNOに置き換えます。

ひとりぶろぐの場合は、以下のようになります。

https://api.push7.jp/api/v1/b12ed56a2b1642febc36c4c6cd1a0313/send

ここへbodyに指定のJSONを置いてPOSTメソッドでリクエストを投げます。

[APPNO]と[APIKEY]はPush7のダッシュボード「登録アプリケーション > アプリケーション設定 > 自動プッシュ設定 > WordPress」から取得したもので置き換えます。

#!/usr/local/bin/ruby
# coding: utf-8

require 'net/http'
require 'uri'
require 'json'

APP_NO = "[APPNO]"
API_KEY = "[APIKEY]"
END_POINT = "https://api.push7.jp/api/v1/#{APP_NO}/send"

uri = URI.parse(END_POINT)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
req = Net::HTTP::Post.new(uri.request_uri)
req["Content-Type"] = "application/json"

payload = {
	"title" => "テストタイトル", 
	"body" => "テスト本文", 
	"icon" => "https://dashboard.push7.jp/uploads/5f670282635746e38ce6b060ad495d2a.png",
	"url" => "http://hitoriblog.com/",
	"apikey": API_KEY
}.to_json

req.body = payload
res = http.request(req)

p res
p res.body

ポイントは、SSLを有効にしないと400エラーが返ってくるということです。

#<Net::HTTPBadRequest 400 Bad Request readbody=true>

購読者が0人の状態で投げると、ダッシュボードに記録は残るものの当然プッシュ通知は配信されず、405エラーが返ってきますので慌てずに。

#<Net::HTTPMethodNotAllowed 405 METHOD NOT ALLOWED readbody=true>

非常に簡単に利用できるので、何かのbot的なものからの利用を考えてみようと思っています。

ブログの方も、購読者が増えたらリアルタイム性を前提とした取り組みもやりやすくなるでしょうし、ちょっとわくわくしますよ。

プッシュ通知を

 - Webサービス・アプリ