こんにちは、ギャップラー小林です。

 さて今回は先週リリースした「push 通知ライブラリ」についてお話したいと思います。

 このライブラリは、push 通知が仕組みはシンプルなのに意外とめんどくさい世の中に手頃なライブラリが無いといった理由から生まれました。確かに、アプリ単体では実現できず、別途サーバを立てなきゃいけないとなると敷居は高く感じますよね。最近はサーバ側を代行するサービスやフレームワークも出てきているようですが、ちょっと試してみたいとかシンプルに使えれば十分と思い、なかなか手が出せない方もいるのではないでしょうか?そんな皆さんにぜひ使っていただきたい!

 ライブラリをダウンロードしていただければ分かると思いますが、ファイルは APNs(iOS) 用と GCM(Android) 用がそれぞれ 1 つずつあるだけです。標準ライブラリのみ使用しているため、このファイル 1 つインポートするだけでサーバプログラムを書くことができちゃいます。Ruby と PHP、主要な二言語に対応しているところもイイ!

 ちなみに「ちょっと試してみたい」のであれば、別途サーバを用意しなくてもお試しできるんです!アプリ開発で Mac をお使いなら標準で Ruby がインストールされていますので、push 通知するテキストを送るスクリプトを作成すればよいのです。iOS + Ruby の例で、その手順を簡単に紹介します。

  1. push 通知が利用できるよう、Xcode プロジェクトをセットアップ。
  2. アプリを実行してデバイストークンを取得、メモする。
  3. push 通知ライブラリを使ってメッセージ送信する Ruby スクリプトを書く。
  4. スクリプトを実行し、iOS 端末に push 通知されることを確認。

 まず 1. は Apple のドキュメント「Local および Push Notification プログラミングガイド」を参考に Xcode プロジェクトを作成してください。

 次に 2. ですが、AppDelegate に次のコードを入れることでログウィンドウにデバイストークンを出力させることができます。

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)token {
    NSLog(@"DeviceToken: %@", token);
}

 3. については、例えばこんな Ruby スクリプトを用意します。

# encoding: utf-8
require './GPApnsConnection'

# 引数の有無や内容のチェックは省略してます…
message = ARGV[0]
token = ARGV[1]

apns = GPApnsConnection.new
apns.pem = "(サーバ証明書のパス)"
apns.sandbox = true

apns.send_message(token, message)

 上記のスクリプトをターミナルで実行します。

$ ruby push_sample.rb "Hello, push notification", "(スペースを除いたデバイストークン)"

 成功すれば、2. で実行しているアプリ名で push 通知がされるはずです!

 いかがだったでしょうか?「push 通知使ってみたいけど…」と悩んでいた方の、チャレンジするきっかけになれば幸いです!