Push 通知ライブラリは、iOS/Android アプリで Push 通知機能を実装する際に必要となる、サーバアプリケーションの開発を支援するものです。
特徴
- Ruby または PHP で利用できます。
- iOS/Android それぞれの Push 通知に対応しています。
- Ruby/PHP, iOS/Android どの組み合わせでもほぼ同じように利用できるよう、設計されています。
APNs で iOS 端末に Push 通知を行う場合
はじめにこのライブラリを利用し、iOS 端末に Push 通知を行う方法を説明します。 なお、実装例では Ruby 版となっております。
前提条件
以下の条件が整った状態を前提とします。
- Apple の開発者ページにて “Website Push ID” を登録して証明書を発行し、サーバに設置している。
- “Push Notifications” を有効にした iOS アプリから端末のデバイストークンを受信し、サーバの DB に保存している。
ライブラリのインポート
プログラムの先頭でライブラリをインポートします。 ライブラリをカレントディレクトリの lib の下に配置した場合、次のようになります。
require './lib/GPApnsConnection'
GPApnsConnection インスタンスの作成
GPApnsConnection
クラスのインスタンスを作成し、必要なプロパティを設定します。
apns = GPApnsConnection.new apns.sandbox = true # sandbox環境の場合 true apns.pem = "/usr/local/xxxx" # PEMファイルのパス apns.pass = "xxxx" # パスフレーズ
メッセージの送信
send_message
メソッドを呼び出し、メッセージを送信します。
apns.send_message( "xxxxxxxxxxxxxx", # デバイストークン(16進数表現の文字列) "This is test message !", # 通知の "alert" 部分に入る文字列(もしくはハッシュ) 3 # バッジに表示する数(省略可) )
複数デバイスにメッセージを送信する場合は
send_messages
を使用します。
GCM で Android 端末に Push 通知を行う場合
次に Android 端末に Push 通知を行う方法を説明します。
前提条件
以下の条件が整った状態を前提とします。
- Google API コンソールで “Simple API キー(Server Key)” を取得している。
- Android アプリから端末 ID を受信し、サーバの DB に保存している。
ライブラリのインポート
プログラムの先頭でライブラリをインポートします。 ライブラリをカレントディレクトリの lib の下に配置した場合、次のようになります。
require './lib/GPGcmConnection'
GPGcmConnection インスタンスの作成
GPGcmConnection
クラスのインスタンスを作成し、必要なプロパティを設定します。
gcm = GPGcmConnection.new gcm.api_key = 'xxxxxxxxx' # APIキーを指定する
メッセージの送信
send_message
メソッドを呼び出し、メッセージを送信します。
gcm.send_message( "xxxxxxxx", # 端末ID "update message", # collapse key {:message => "test message", :type => "toast"} # メッセージ内容のハッシュ )
複数デバイスにメッセージを送信する場合は
send_messages
を使用します。
Android 端末側の受信について
サーバから送信されるデータは、以下のような JSON 形式になっています。
{ "registration_ids": ["xxxxxxxx"], "collapse_key": "update message", "data": {"message":"test message", "type":"toast"} }
従って BroadcastReceiver
で受信するには、次のようになります。
public class GcmBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Bundle bundle = intent.getExtras(); String message = bundle.getString("message"); String type = bundle.getString("type"); } }