mBaaSで一番多い問い合わせがプッシュ通知に関連するものです。その中でも届かない、エラーが出ると言った問い合わせが多く寄せられています。その多くは証明書であったり、トークンに起因するものなのですが、クラウドサービスということもあってエラーのハンドリングがしづらいという問題があります。
そこで今回はローカルでプッシュ通知を試してみる方法を紹介します。
前提条件
証明書を設定し、データストアにデバイストークンが登録されていることとします。そこまでの流れ(証明書の取得やiOSアプリ側でのコーディングなど)についてはプッシュ通知 (iOS) : 基本的な使い方 | ニフティクラウド mobile backendを参照してください。
証明書をダウンロードする
まず、すでにmBaaSに登録されている証明書をダウンロードします。アプリ設定のプッシュ通知からダウンロードできます。
p12ファイルを変換する
ここでダウンロードされるファイルはp12ファイルとなっています。これをpem形式に変換します。パスワードを求められますが、そのままエンターキーでOKなはずです。もしダメだった場合、証明書にパスワードがかかっている可能性があります。この状態の証明書はmBaaS側でのエラーにつながります。
$ openssl pkcs12 -in ncmb_cert.p12 -out ncmb_cert.pem -nodes -clcerts Enter Import Password: MAC verified OK
プッシュ通知用ライブラリのインストール
Rubyで配布されているHoustonというライブラリをインストールします。
gem install houston
mBaaSでデバイストークンをコピーする
mBaaSの管理画面、データストアのInstallationにあるデバイストークン(deviceTokenのところ)をコピーします。
プッシュ通知を送信する
後は実際にコマンドを入力してみましょう。DEVICE_TOKENはコピーしたデバイストークンを貼り付けてください。
$ apn push "DEVICE_TOKEN" -c ncmb_cert.pem -m "テストのプッシュ通知"
問題がなければ
1 push notification sent successfully
のようにメッセージが返ってきます。もし証明書に問題があると、
Exception sending notification: Neither PUB key nor PRIV key: nested asn1 error
といったようなエラーが出ます。この場合は証明書を作成し直して再度実行してみてください。
mBaaSのプッシュ通知の仕組みはローカルで確かめることができます。何かおかしいと思った時にはローカルで試してみてください。