Ruby で Pushbullet を使う
Pushbullet の API を使って各デバイスに通知を送ってみる
Pushbullet
Pushbullet はブラウザ又は Mac/Windows/iOS/Android のアプリからアクセスできて特定のデバイスにテキストや地図、ファイル等を送信できる。送信を受けたデバイスには通知センターに表示できる
今回はこれを使って Mac から任意のタイミングで iPhone にpush通知 を送るようにしたい
Gem インストール
Ruby で扱うための gem が公開されていたのでこれをインストール
gem install washbullet
自分のアクセストークンを Pushbullet の Setting から入手
32桁の文字列がアクセストークンになっている
アクセストークンを使って API から自分のid とデバイスのid を調べる
ターミナルで以下のコマンドを実行する
自分のid
curl -u Your_Token: https://api.pushbullet.com/v2/users/me
デバイスのid
curl -u Your_Token: https://api.pushbullet.com/v2/devices
JSON が帰ってる。 "iden":に続く文字列がidになる
取得したidで通知を送る
require 'washbullet' client = Washbullet::Client.new('Your_Token') client.push_note('Your_Device_Id', 'title', 'messege')
これを実行するとで送信された
id を Ruby から調べる
手動でidを読むのは面倒なのでアクセストークンを入力すると自動で自分のid と Pushbullet に登録されたデバイスのid を返すようにしてみた
require "json" def getUserId (token) api_response = `curl -s -u #{token}: https://api.pushbullet.com/v2/users/me` userId = JSON.parse(api_response) return userId["iden"] end def getDeviceId (token) api_response = `curl -s -u #{token}: https://api.pushbullet.com/v2/devices` deviceInfo = JSON.parse(api_response) deviceIds = Array.new deviceInfo["devices"].size.times do |i| deviceId = deviceInfo["devices"][i]["iden"] deviceName = deviceInfo["devices"][i]["nickname"] deviceModel = deviceInfo["devices"][i]["model"] deviceIds.push([deviceId, deviceName, deviceModel]) end return deviceIds end token = "Your_Token" p getUserId (token) p getDeviceId (token)
実行すると自分のidとデバイスid,デバイスのニックネーム,デバイスモデルが表示される
参考ページ
- Pushbullet API Documentation
- 公式ドキュメント
- hrysd/washbullet
- 今回使ったgem、お世話になります
- Ruby 1.9 以降で JSON を扱う - 見上げれば、空
- jsonの扱い方
ありがとうございます。