curl で iPhone にプッシュ通知しよう
- 1. USP 友の会・シェル芸勉強会 LT - 2014/02/15
curl で iPhone にプッシュ通知しよう
日本 GNU AWK ユーザー会
斉藤 博文
hi_saito@yk.rim.or.jp
@hi_saito
Page 1
http://gauc.no-ip.org/awk-users-jp/
- 2. USP 友の会・シェル芸勉強会 LT - 2014/02/15
iPhone 用プッシュアプリ
名前
imkayac
ここが○
API が簡単
PUSH
HTML 利用可能
Pushover
iOS7 ライクな
UI
IFTTT 連携可能
ここが×
他人からプッシュ
されてしまう
iOS7 っぽくない
操作性が若干悪い
一長一短あるが Pushover が無難
Page 2
http://gauc.no-ip.org/awk-users-jp/
- 3. USP 友の会・シェル芸勉強会 LT - 2014/02/15
Pushover の見た目
iOS7 に合った UI。
アイコンを API Token で使い
分けることが可能。
様々な情報を一括表示または
個別表示可能。。
常に使うアプリは見た目も重要
Page 3
http://gauc.no-ip.org/awk-users-jp/
- 4. USP 友の会・シェル芸勉強会 LT - 2014/02/15
問題はパラメータ数
この手の API はパラメータが多いのが特徴。
毎回入力するのは面倒。
curl -s -F "token=${token}"
-F "title=${title}"
-F "user=${user}"
-F "prioriy=${prioriy}"
-F "message=${message}" -F "timespamp=${timespamp}"
-F "sound=${sound}"
https://api.pushover.net/1/messages.json
関数化して簡略化したいよね
Page 4
http://gauc.no-ip.org/awk-users-jp/
- 5. USP 友の会・シェル芸勉強会 LT - 2014/02/15
入力はヒアドキュメント
複数行を送信したい場合もあるので、変数を
引数にするよりもファイルを引数にした方が
便利。
cat <<TXT > push.txt
1
# 優先度
a*****************************
# API Token
u*****************************
# User Key
タイトル
# タイトル
本文
# 本文
TXT
ヒアドキュメント使っていますか?
Page 5
http://gauc.no-ip.org/awk-users-jp/
- 6. USP 友の会・シェル芸勉強会 LT - 2014/02/15
関数化部分 - その 1
関数内の declare は local と同義でローカル
変数として定義される。
declare push_txt=${1}
declare prioriy=$(awk 'NR == 1' ${push_txt})
declare token=$(awk 'NR == 2' ${push_txt})
declare user=$(awk 'NR == 3' ${push_txt})
declare title=$(awk 'NR == 4' ${push_txt})
declare message=$(awk 'NR >= 5' ${push_txt})
declare timestamp=$(date '+%s')
declare sound="pushover"
決め打ちだけど、自分が分かれば OK
Page 6
http://gauc.no-ip.org/awk-users-jp/
- 7. USP 友の会・シェル芸勉強会 LT - 2014/02/15
関数化部分 - その 2
変数定義されたものを curl で送信するだけの
簡単なお仕事です。
curl -s -F "token=${token}" -F "user=${user}"
-F "title=${title}" -F "prioriy=${prioriy}"
-F "message=${message}" -F "timespamp=${timespamp}"
-F "sound=${sound}"
https://api.pushover.net/1/messages.json > /dev/null
もちろん wget でも可能
Page 7
http://gauc.no-ip.org/awk-users-jp/
- 8. USP 友の会・シェル芸勉強会 LT - 2014/02/15
関数化部分 - 完成
SEND_PUSHOVER() {
declare push_txt=${1}
declare prioriy=$(awk 'NR == 1' ${push_txt})
declare token=$(awk 'NR == 2' ${push_txt})
declare user=$(awk 'NR == 3' ${push_txt})
declare title=$(awk 'NR == 4' ${push_txt})
declare message=$(awk 'NR >= 5' ${push_txt})
declare timestamp=$(date '+%s')
declare sound="pushover"
}
curl -s -F "token=${token}" -F "user=${user}"
-F "title=${title}" -F "prioriy=${prioriy}"
-F "message=${message}" -F "timespamp=${timespamp}"
-F "sound=${sound}"
https://api.pushover.net/1/messages.json > /dev/null
Page 8
http://gauc.no-ip.org/awk-users-jp/
- 9. USP 友の会・シェル芸勉強会 LT - 2014/02/15
関数の呼び出し
cat <<TXT > push.txt
1
a*****************************
u*****************************
USP Magazine 原稿の件
締め切りまであと 5 日ですが、
進捗はどうですか? by ☆
TXT
SEND_PUSHOVER push.txt
引数にヒアドキュメントのファイルを指定
Page 9
http://gauc.no-ip.org/awk-users-jp/
- 11. USP 友の会・シェル芸勉強会 LT - 2014/02/15
何に使っている?
注意報・警報の通知
雨量情報の通知
特定の人から来たメールの通知
気になるキーワードを含むツィートの通知
システムのアップデート結果
サーバー異常等の報告
IFTTT からの通知
Page 11
http://gauc.no-ip.org/awk-users-jp/