Push 通知ライブラリは、iOS/Android アプリで Push 通知機能を実装する際に必要となる、サーバアプリケーションの開発を支援するものです。

About Push Notification

特徴

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

ダウンロード

本ライブラリは MIT ライセンスのもとで公開されています。