RailsでAPNSするときの注意点

ライブラリはこちらを使わせてもらう

jpoz / APNS

railsからapnsを使うためにgemfileに追記する


gem "apns"

bundle install

Apple Developer Centerからダウンロードした開発用.p12証明書を鍵とセットの証明書に変換

openssl pkcs12 -in 証明書.p12 -out apns.pem -nodes

証明書をRailsのプロジェクトディレクトリににアップロード

あとはアップロードしたファイルを指定して、指定のデバイスIDに送ればOK!

APNS.pem = Rails.root.join("cert","apns.pem")
APNS.send_notification(アプリから登録したデバイスID, "Hello iPhone!")


なはずだったのだが・・・・

なぜか英語の通知はできるのに日本語だと通知が行かない。



とりあえずtcpdump port 2195すると、正常に送れる時と送れない時で微妙に応答がちがう。。。

半日ぐらい悩んだ挙句、こちらにたどり着いた

APNS.pem = Rails.root.join("cert","apns.pem")
alert = String.new("はろーあいふぉん")
alert.force_encoding("ascii-8bit") if RUBY_VERSION.to_f >= 1.9
APNS.send_notification(アプリから登録したデバイスID, alert)

これで日本語もちゃんとpushできました。


参考にさせてもらったページ
https://github.com/jpoz/APNS
http://d.hatena.ne.jp/arcright/20120620/1340428736
http://atotok.net/note/rails/?incompatible+character+encodings%3A+ASCII-8BIT+and+U