この記事を書く理由
この前、実務で「iOSのpush通知証明書の更新をやっておいて」と無茶振りされました。
iOSの開発等をほとんどやった事がなかった + 手順書等が存在しなかった為、0から調べて手順をまとめてみました。
色々とハマったので僕と同じような方の参考になれば嬉しいです!
※iOS Developer等のページのUIはコロコロ変わるようなので、微妙にUIの文言等が変わってくるかも知れません。 また今回僕がハマった箇所を記載するので、他の人に当てはまらない箇所もあるかと思います。
前提
Amazon SNSを利用したプッシュ通知を利用しているアプリケーションのpush通知証明書の更新です。
プッシュ通知を確認するところまで書いていきます。
やっていく!
大まかな流れ
①証明書の要求ファイル(CSRファイル)を作成
。
②余分な証明書の削除
← ※この項目はほとんどの方が必要ないかと思います。
③Developer Center でCSRを利用して、証明書を作成。
④作成した証明書からp12ファイルを書き出す。
⑤p12ファイルをAWS SNSで使用するように設定。
⑥プッシュ通知が送信されることの確認
。
上記流れでやっていきます。
①証明書の要求ファイル(CSRファイル)を作成 。
・CSRファイルの作成
・MacPCのキーチェーンアクセスを開く
・[キーチェーンアクセス」→「証明書アシスタント」→「認証局に証明書を要求」をクリック。
・「ユーザーのメールアドレス(Apple Developerのもの)」を入力。(「通称」は任意のもの(秘密鍵の名前になります。)、「CAのメールアドレス」は空欄でOK)
・「要求の処理」は「ディスクに保存」を選択し「鍵ペア情報を設定」にチェック。「続ける」をクリック。
・保存先の選択が出るので任意の場所を選択し「保存」をクリック。
・「鍵ペア情報」画面を確認して「続ける」をクリック。
・「設定結果」画面が出るので「完了」をクリック。
②余分な証明書をの削除。
・証明書は2つまでしか作成できない為、有効期限が切れている方の証明書を削徐する。
(※証明書が2つある場合のみ。※有効期限が切れていない方を削除するとプッシュ通知が飛ばなくなるので注意。)
・Developer Centerで[Certificates]の有効期限が切れている方の証明書をクリック。
・Removeボタンをクリック
・確認モーダルが出るので、再度Removeボタンをクリック。
※今回ハマったところは、なぜか同じ有効期限の証明書があり、どちらを削除すべきか迷った。→ AWS SNSに設定されている証明書の有効期限の日付 + 時間と証明書の日付 + 時間を見比べて、使用していない方を削除した。
③Developer Center でCSRを利用して、証明書を作成。
・①で作成したCSRファイルを利用して証明書の作成
・「Certificates」をクリックし、「Certificates」の隣にある「+」をクリック。
・「Create a New Certificate」で「Apple Push Notification service SSL (Sandbox & Production)」にチェックをいれ、右上の方の「Continue」をクリック。
・AppleIDが聞かれるので、該当するIDを選択。(※1つしか選択できないはず。)
・「Choose File」をクリックして、1) で作成した「CSRファイル」を選択し、「Continue」をクリック。
④作成した証明書からp12ファイルを書き出す。
・p12ファイの作成
・③で作成したAPNs用証明書(.cer) の「Download」をクリックして「aps.cer」をローカル保存
・「aps.cer」をダブルクリックして、MaPCキーチェーンアクセスを開く。
・Apple Push Serviceの証明書がキーチェーンアクセスに登録されるので、証明書を右クリックして「・・・を書き出す」から [p12]ファイルを選択
※キーチェーンの「すべての項目」ではp12が選択できないので、「自分の証明書」から表示
※パスワード空はNG
・任意の名前を付けて任意の場所に保存(※日本語名NG)
⑤p12ファイルをAWS SNSで使用するように設定。
・AWS SNSに④で作成したp12ファイルを設定
・AWS SNSから[アプリケーション]を開き、[Mobile] → [プッシュ通知]を開く。
・[プラットフォームアプリケーション] → 使用しているプラットフォームアプリケーションを選択。
・[編集]をクリック。
・編集画面にて、[サンドボックスでの開発に使用されます]にチェック。 (おそらくテスト環境で使用する場合にチェックする。)[プッシュ証明書タイプ]「iOS」を選択。[証明書]で④で作成したp12ファイルを選択。
・証明書とプライベートキーそれぞれに文字列が入力されたのを確認して、[変更の保存]をクリック。
・証明書の有効期限が更新されていることを確認する。
⑥プッシュ通知が送信されることの確認 。
・[プラットフォームアプリケーション] → 使用しているプラットフォームアプリケーションを選択。
・エンドポイントの検索フォームにテスト用のプッシュ通知を送信したいデバイスのデバイストークンを入力。
・検索したエンドポイントを選択して、[メッセージの発行]をクリック。
・[配信プロトコルごとにカスタムペイロード]を選択して、[メッセージの発行]をクリック。
・選択したデバイスにプッシュ通知が送信される事を確認する。
以上で僕の環境では無事にpush通知が送信されて、本番環境でも問題なく動作しました!
指摘等ありましたら、何でもお願い致します!