iOS の Push Notification について

備忘用に概要から

iOS の通知機能には2種類あって、端末内で完結する Local Notification と、外部のサービスプロバイダから通知を受け取る Push Notification がある。
Local Notification はアプリ内から次回通知する日時等を指定するのみ。他の条件はつけられない(繰り返し条件等はある)。
Push Notification は外部のサーバーから任意のタイミングで送信することができる。
ただし端末への送信は Apple のサーバーを経由する必要があるので、証明書の発行や登録云々の準備が必要で面倒。

 

証明書の準備

※英語で良ければ↓のほうが画面付きでわかりやすいかも
Apple Push Notification Services Tutorial: Part 1/2 | Ray Wenderlich

  1. Mac 内のキーチェーンアクセスを起動→メニューのキーチェーンアクセスから証明書アシスタント→認証局に証明書を要求
  2. ユーザーのメールアドレスには Deveroper Program に登録したアドレスを入力
  3. ディスクに保存をチェックして保存
  4. iOS Dev Center にログイン
  5. iOS Provisioning Portal→App IDs→New App ID で ID を作成
  6. 上で作った App ID の configure
  7. Enable for Apple Push Notification service で以下のどちらかの Configure
    1. 開発用: Development Push SSL Certificate
    2. 本番用: Production Push SSL Certificate
  8. 前の手順で作成した証明書を選択
  9. Status が Enable になったら Download から aps_development.cer をダウンロード
  10. ダウンロードした aps_development.cer をダブルクリックしローカルのキーチェーンに登録
  11. キーチェーンアクセスを起動
  12. 自分の証明書を選択(左のメニュー)
  13. 右側のリストから Apple Development IOS Push Services を選択(本番用なら Apple Production IOS Push Services)
  14. 右クリックして書きだす(ファイル名は任意。ここでは apns-dev-cert.p12 とする)
  15. 折りたたまれているのを開いて秘密鍵を選択し、書きだす(ファイル名は任意。ここでは apns-dev-key.p12 とする)
  16. ターミナルを起動
  17. 以下のようなコマンドを実行(パスやファイル名は適宜変更して)
    1. openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12
    2. openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12
    3. cat apns-dev-cert.pem apns-dev-key.pem > apns-dev.pem

以上で iOS Dev Center への登録と証明書の作成が完了

 

アプリ側の設定

開発環境によって異なるので省略
Titanium なら iOS Device に書き出すときに Enable for Apple Push Notification service した App ID を含む Provisioning Profiles を選んでおく。
デバイストークンの取得や Push Notification の登録はここでは書きません…。
なお、通知がうまくいかない場合でサーバー側の実装に疑いがない場合は証明書や Provisioning Profiles が古い場合があるので何度かやり直すと良いかも。
特に以下の問題にハマった
AppStoreからリリースしたアプリで、デバイストークンの取得ができずプッシュ通知ができない、、、 << kamepress

 

サーバー側の実装

サーバー側の実装も↓の下の方に載っている
Apple Push Notification Services Tutorial: Part 1/2 | Ray Wenderlich
Download the SimplePush code でサンプルコードがダウンロードできるので、まずはそれで送信できるか確認する。

 

その他、参考にさせて頂いたサイト


コメントを残す

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