iOSでPush通知を実装するために、すこぶるハマったので忘れないように書いておこうと思います。
書いてる内容はやり方というか、ちょっとニュアンスは違います。
##証明書は2種類必要
証明書は、
####開発用
- プッシュ通知用の証明書(APNs Development iOS)
- プロビジョニングファイル用の証明書(iOS Development)
####本番用
- プッシュ通知用の証明書(APNs Production iOS)
- プロビジョニングファイル用の証明書(iOS Distribution)
それぞれで2種類ずつ必要です。
プロビジョニングファイル作成時に証明書を選択する画面がありますが、ここにはプッシュ通知用の証明書は表示されませんのでご注意ください。ここではプロビジョニングファイル用の証明書を選択するのでOKです。
##サーバにはプッシュ通知用の証明書から作成したpemファイルをアップする
サーバにアップするpemファイルはプッシュ通知用の証明書から作成したものが必要です。プロビジョニングファイル用の証明書から作成したpemファイルをアップしないように気をつけてください。
pemファイルは下記ツール使えば簡単に作れます。
コマンドたたくの面倒な人は試してみてください。(Mac用)
https://itunes.apple.com/jp/app/pempem/id876280659?mt=12
##ビルドする時にDebug・Adhoc・Releaseのどれでビルドしたか確認する
Debug、Adhoc・Releaseで送られてくるデバイストークンの種類が違います。
####Debug
- APNs -> SANDBOX
- デバイストークン -> 開発用トークン
####Adhoc・Release
- APNs -> PRODUCTION
- デバイストークン -> 本番用トークン
どれでビルドするかはメニューのProduct -> Scheme -> Edit Scheme
の、
Run -> Info -> Build Configuration
で選択できます。
##wifi環境ではPush通知が送られてこない
wifi環境ではPush通知が送られてこないことがありました。
なぜPush通知送られてこないのか原因がさっぱりわかりません。
##おわりに
慣れてしまえばどうということはない、というようなことに数時間もハマってしまいました。
同じ問題にぶつかっている方のお役に立てれば幸いです。
http://qiita.com/0x0c@github/items/811fb70d0d2523968e50