AWS SNSのiOS向けPush通知(APNs)証明書の更新手順


更新手順なので、既に初期設定は終わっている想定。

Apple Developerでcerを発行

Apple Developer Programにログインする。
左メニューの「Certificates, Identifiers & Profiles」をクリックする。

右上にある「+」ボタンをクリックする。

Production→Apple Push service SSL (Sandbox & Production)を選択する。

Push通知を送りたいApp IDを選択する。

CSRを作れと言われるので、言われた通りにCSRファイルを作成する。

Mac上で「キーチェーンアクセス」アプリを起動する。
キーチェーンアクセス→証明書アシスタント→認証局に証明書を要求…

ユーザーのメールアドレスと通称に何か入れる。通称は英語にしておくと問題が起きにくい。
「ディスクに保存」を選択しておく。
「鍵ペア情報を指定」はチェックなし。
そして「続ける」

CSRが作成されました!

Apple Developerに戻って、先程作成したCSRファイルをアップロード。

すると.cerファイル作ったよ!と言われるのでダウンロードする。

.p12ファイルを作成

ダウンロードした.cerファイルをダブルクリックする。
すると「キーチェーンアクセス」アプリが起動して、先程CSRを作成した際に入れた「通称」の鍵と証明書がペアになっている。

証明書を右クリックして、右クリックメニューから「”Apple Push Services: hogefuga”を書き出す…」を選択する。

.p12になっているのでそのまま保存する。
ちなみにファイル名は英語にしておかないと後でエラーになる事がある。

保存する際にパスワードを聞かれるので、適当に設定する。
適当と言っても本当に適当に設定して忘れてしまってはいけない。

AWS SNSの設定の更新

AWS管理画面に入ってSimple Notification Serviceに移動する。
左メニューから「Applications」に遷移する。

右欄から対象となるARNをクリックする。

Platform application actions→Update credentialsを選択する。

先程生成した.p12ファイルと.p12ファイル生成時に使ったパスワードを入力する。
ここで.p12ファイルが英語でなかったり通称が英語でなかったりすると、謎エラーが出て作り直しが必要な事がある。

テスト

ここのsnsmobilepush.zipをダウンロードして解凍する。
AppleMobilePushApp/iOS 8/AmazonMobilePush.xcodeprojをダブルクリックして開く。
警告が出るけど開く。

GeneralタブのIdentity→Bundle Identifierを証明書を発行したApp IDに変更する。

Signingを合わせて変更する。ここで「!」マークが出ていたらダメ。
CapabilitiesタブからPush NotificationsをONにしておく。

適当にテスト登録している端末にインストールして起動する。
するとDevice Token = <examp1e 29z6j5c4 df46f809 505189c4 c83fjcgf 7f6257e9 8542d2jt 3395kj73>みたいなログが出る。

このデバイストークンをAWS SNSに登録する。
Create platform endpoint→Manually add a single tokenで先程のデバイストークンを入力して「Add endpoint」。

その後、Filterで検索して、「Publish to endpoint」。

「Message format」を「JSON」にして、「JSON message generator」をクリック。
するとこんな感じの画面が出てくるので、テストっぽいメッセージを入れて「Generate JSON」。ここは日本語OK。

こんな感じになるので、右下から「Publish message」する。

するとテスト端末のテストアプリにPush通知が届く。

所感

何かもうちょっと単純だった気がしていたけど、そんな事は無かった…