RailsでAPNSするときの注意点
ライブラリはこちらを使わせてもらう
railsからapnsを使うためにgemfileに追記する
gem "apns"
Apple Developer Centerからダウンロードした開発用.p12証明書を鍵とセットの証明書に変換bundle install
証明書をRailsのプロジェクトディレクトリににアップロードopenssl pkcs12 -in 証明書.p12 -out apns.pem -nodes
あとはアップロードしたファイルを指定して、指定のデバイス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