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");
}
}








