※証明書対応に関しては以下記事で丁寧に説明されています。
本記事は以下記事を読んでもうまく行かない方向けになります。
https://qiita.com/natsumo/items/d5cc1d0be427ca3af1cb
https://qiita.com/guitar_char/items/7dbd7e2bc35a1fc9e5a0
証明書更新作業を実施する必要があった時に詰まってしまったのでメモ。
「この証明書を準備すればたぶん大丈夫」と
証明書の役割をしっかり理解しないまま進めたのが問題だったと反省。。
■更新にあたって作り直したファイル
・開発用証明書(DevelopmentとProduction)
※初回時に作成していればよいのですが、今回諸事情により作り直し
・Provisioning Profile
・APNs用証明書(.cer)
・APNs用証明書(.p12)
■詰まった点その1:Signing Certificateがエラーでビルドできなくなった
(1)状況
以下サイトを参考に、プロビショニングプロファイルを更新(新たに作成)したのに
XcodeのSigning Certificateがエラーになりビルドできない。
https://qiita.com/natsumo/items/d5cc1d0be427ca3af1cb
(2)解決へのポイント
「登録したAppIDで
登録した開発デバイスを使って、
紐づけた証明書と、キーチェーンに保存してある証明書が一致
した時のみ、ビルド可能になる仕組み。」
※引用:https://qiita.com/guitar_char/items/7dbd7e2bc35a1fc9e5a0
(3)ポイントを踏まえて状況を再確認
紐づけた証明書と、キーチェーンに保存してある証明書が一致しているか確認したところ、キーチェーンに保存してある証明書は古いもののまま。
なぜ!?
(4)原因
開発用証明書(.cer)を作成しダウンロードしたものの、
キーチェーンに登録できていなかったため。
要はダウンロードした開発用証明書をダブルクリックしていなかっただけです。
恥かしすぎますね。。
意味を理解せずに「この手順でやれば大丈夫」という認識がミスを引きおこしたと思います。
■詰まった点その2:プッシュがとばない
(1)前提
プッシュ通知にはFirebase Cloud Messagingを使用
(2)解決へのポイント
詰まった点その1のポイントと同じような考え方で、
キーチェーンに登録されているAPNs用証明書と、
サーバー側に置く.p12ファイルの情報が一致していればプッシュ可能になる、です。
(3)ポイントを踏まえて状況を再確認
・キーチェーンに登録されているAPNs用証明書を確認
→詰まった点その1と同様で、証明書を作成してダウンロードしたのはよいものの、
キーチェーンに登録されておらず。
・サーバー側に置く.p12ファイル
→Firebaseに古い証明書しかアップロードされておらず。
(そもそもFirebaseにアップロードするという認識が漏れていた。。)
(4)原因
・APNs用証明書がキーチェーンに登録されていなかったため。
→ダウンロードした証明書をダブルクリックでキーチェーンに登録
・.p12ファイルのアップロード漏れ
→今回のケースではFirebaseに更新した.p12ファイルをアップロードして解決
■参考リンク