ニフクラmBaaSお役立ちブログ

スマホアプリ開発にニフクラmBaaS。アプリ開発に役立つ情報をおとどけ!

プッシュ通知が正しく送れるか、ローカルでデバッグしましょう(iOS編)

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のプッシュ通知の仕組みはローカルで確かめることができます。何かおかしいと思った時にはローカルで試してみてください。

プッシュ通知 (iOS) : 基本的な使い方 | ニフティクラウド mobile backend