ApnsPHPでハマった話

2016年04月13日
投稿者:Ken
カテゴリ:iOS, PHP タグ:, , , , , , ,

cordova + ionicでプッシュ通知(iOS)の1から9!でiOSのプッシュ通知はもう大丈夫って思っていたんですけど、ちょっと考えが甘かったです。

というのは、サーバーから実際にプッシュ通知を投げるときのことをあまり考えていなかったから。以前は簡単なSimplePushというサンプルアプリを使ってプッシュ通知のテストをしたのですが、本番環境でそのサンプルを使うわけにもいかず、ライブラリを探すことになりました。

ApnsPHP というライブラリが選定されましたが、 SimplePush と同じような感覚で、「とりあえず証明書とか鍵設定すればもう送信できるっしょ」ってな気持ちで挑んだら思わぬ罠(実際は罠ではない)にはまりました。

ハマった箇所は公式にもあるこの場所↓

server_certificates_bundle_sandbox.pem と entrust_root_certification_authority.pem が超重要なんですけど、訳もわからず前回の記事で作った2つの pem ファイルを設定すると、ひたすら 'Unable to connect to 'tls://gateway.sandbox.push.apple.com:2195' が出て Exception になり続けます。 pem も設定してるし、サーバーから SimplePush を使った場合は普通にプッシュ通知できるし、で謎が深まるばかり。

結局、Githubのページ「How to generate a Push Notification certificate and download the Entrust Root Authority certificate」にしっかりと手順が書かれていました。重要なのは

select Apple Development Push Services AND your private key

キーチェーンから鍵を書き出すときに、証明書と鍵の 両方 を選択して書き出すって書いてあるんです!なので、 SimplePush のときに使った証明書の出し方とは異なります。

おまけに、2つ目に指定する証明書は別途ダウンロードしてくるものでした!

wget https://www.entrust.com/root-certificates/entrust_2048_ca.cer -O - > entrust_root_certification_authority.pem

「そりゃ、動かないわな」って感じですね。ドキュメントはしっかり読みましょう〜。

無事にサーバーからプッシュ通知が投げれるようになった、って話です。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です