ikeikeikeike's unk blog.

http://github-awards.com/users/ikeikeikeike

iPhone/iPadプッシュ通知をpython製アプリケーションpyapnsで送る

 

 

pyapns

pyapns はApple Push Notification Service(以下APNS)と会話してくれるサーバーアプリケーションで通信はHTTPを使用します。 Twisted baseのWebサーバーとのこと。

Instagram でも使用されていて over a billion push notifications ということなので実績は十分ですよね。

 

Request

pyapns へのRequestはPython/Ruby製のマルチスレッドクライアントライブラリがあるのでコレを使うのが無難ぽい。

push通知を飛ばす簡単なサンプルコード

  • これだけでPush通知を飛ばせます、簡単に試せるのでなかなかよい印象です

一括通知

複数iPhoneへの一括通知はnotify関数の引数にlistで入れるようです

  • 何やら送信サイズ制限があるみたいなので20件以下にするのが良いとのこと
  • 1送信は256byte - チェックする関数 (正確ではない)

badge number / sound

バッジナンバー/サウンドはnotifications辞書に追加すればOK

  • sound指定したこと無いけど, どんな音の種類があるんだろう

async call

非同期対応と言うことで、Twistedぽくクライアントもcallbackで書いてもらいたいみたい。こんな感じでしょたぶん

  • 念のためblockingコードを書かないようにすればいいのかなぁ
  • 上のコードは試してないので動かないと思う

雑感

実際に送った雑感はまぁ速いです。 注意点としてはtokenやらnotificationが間違っているとpyapnsがリスタートして初期化すること、確かpush通知送信途中でも強制だったんでここは何か対応する必要があると思います

 

Upstartコンフィグ

Twistedなんでdeamon化はサポートしていますが自動起動がないでしょう、それじゃイカンでしょうってことでUpstartコンフィグのサンプルも書いておきます

  • UnixはkqueueにすればOK

間違ってたらごめんなさい、それでは