Rpushを使ったRailsアプリからiOSアプリへのPush通知の実装方法

Rpushは、iOS、Androidなどへのpush通知を送るRailsのGem。

AmazonのデバイスやWindows Phoneにも対応しててサービス対象デバイスが増えた時にも簡単に実装できるかなと。

ぶっちゃけpush通知の機構をよくわかってなくても(俺がそんな感じw)簡単に実装できるからオススメw

Rpushのリポジトリはこちら

Rpushの導入

RpushのGemを追加

まずはGemfileに以下一文を明記。

次にRailsのルートパスで

でGemの追加。次にRpushのアップグレード

を実行する。これでGemの追加は完了。簡単。

Rpushコントローラの作成とマイグレーション

これもRailsアプリを作り慣れてる人なら当たり前。コントローラーを作ってマイグレーションする。

以上で導入は終わり。

Rpushアプリの作成。

こう書くと、Railsアプリの中にさらにアプリを作るのか?ってなるけど、(つか俺はなった)

Push通知送るためにrpushを設定する!

って感じ。具体的にはDBにPush通知を送る証明書やアプリ名を登録してやればいい。よって

SeedデータでPush通知の証明書などの設定をDBに登録する!

seed.rbに下記のようなコードを追記。

以上で通知を送る下準備は完了。次は実際に動かしてみる。

Push通知を送る。

ここでは

  • 通知を送るiOSデバイスのデバイストークンをDeviceTokenというモデルで管理している。
  • 半年以上サーバーアクセスのない(つまりは起動していない)デバイストークンのデバイスには通知を送らず、デバイストークンをモデルから削除。
  • params[:text]で通知する文言を取得する。

と仕様にしてる。

以下、push通知を送るrpush_controller.rbのメソッド。

このメソッドをコールするとPush通知が送られる。

実際RpushはRpush.embedでRailsアプリ内で起動するのではなく、$ rpush startコマンドでデーモンとして起動することが推奨されてるぽい。

ただ筆者の環境は、Apacheのバーチャルホストを使って、複数のRailsアプリが立ち上がっている。

その各々のRailsアプリでそれぞれ個別にrpushデーモンを立ち上げると負荷がかかりそうやなって思って、Railsアプリに組み込んだ感じ。

所感

蓋を開けてみると結構簡単。ただこれ理解するの結構時間かかった。実装して使ってみるとわかるけど、rpushは結構ログに色々出力してくれたり、通知に失敗すると再度トライしてくれたりと高機能。

ゆえに始めはよくわからんかったけど、やってることはシンプル。

コメントを残す

メールアドレスが公開されることはありません。