当たり前の話かもしれないですが
同じことで戸惑わないように起きた事象と解決法をメモ
起きた事象
手元でビルドしたアプリに対してはFirebaseNotificationからPUSHしても届いていたのに
ストアに公開したアプリになった途端に通知が届かなくなった
原因
FCMではAPNs通知(iOSのPush通知)の証明書として
「開発用 APNs 証明書」と「本番用 APNs 証明書」を設定できます。
このAPNsの証明書はAppleのDeveloper Centerから
CSRから作られた証明書の場合、同一なものと見なされてしまい
DeveloperCenterで別の証明書(.cer)を作っても、違うものとして認識されず
結果、本番用のAPNs証明書に開発用のAPNs証明書が登録されてしまい
PUSH通知やDeviceTokenの登録処理が正しく本番向けに行われない。
見分け方
同一の証明書がセットされている場合、有効期限が同一になっているので
その点を起点に確認すると良いです。
以下同一のものがセットされている場合のスクリーンショット
解決方法
原因にも記載したとおり、同一のCSRを使っているのが問題のため
CSRも別々の物を用意して生成すれば問題ない。
参考:経験談としての注意
2017年当時の挙動として記録を残しておくと
もし誤って開発用の証明書を設定した状態でDeviceTokenを受け取ってしまうと
Firebase側では開発側の証明書とDeviceTokenがセットで登録されてしまうらしく
以後再インストールしても、DeviceTokenの繋がりが有効となっており届いてしまう。
※要するにアンインストールしてもFirebase側との紐付きにおけるPush通知の設定がリセットされない様子。
Sandbox環境の運用が煩雑になってしまうので注意すること。