27
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

FCM用のiOSのPush通知証明書は同じCSRで開発用と本番用を作っては絶対にダメ

Last updated at Posted at 2016-12-20

当たり前の話かもしれないですが
同じことで戸惑わないように起きた事象と解決法をメモ

起きた事象

手元でビルドしたアプリに対してはFirebaseNotificationからPUSHしても届いていたのに
ストアに公開したアプリになった途端に通知が届かなくなった

原因

FCMではAPNs通知(iOSのPush通知)の証明書として
「開発用 APNs 証明書」と「本番用 APNs 証明書」を設定できます。

このAPNsの証明書はAppleのDeveloper Centerから
CSRから作られた証明書の場合、同一なものと見なされてしまい
DeveloperCenterで別の証明書(.cer)を作っても、違うものとして認識されず
結果、本番用のAPNs証明書に開発用のAPNs証明書が登録されてしまい
PUSH通知やDeviceTokenの登録処理が正しく本番向けに行われない。

見分け方

同一の証明書がセットされている場合、有効期限が同一になっているので
その点を起点に確認すると良いです。
以下同一のものがセットされている場合のスクリーンショット
スクリーンショット 2016-12-20 17.37.49.png

解決方法

原因にも記載したとおり、同一のCSRを使っているのが問題のため
CSRも別々の物を用意して生成すれば問題ない。

参考:経験談としての注意

2017年当時の挙動として記録を残しておくと
もし誤って開発用の証明書を設定した状態でDeviceTokenを受け取ってしまうと
Firebase側では開発側の証明書とDeviceTokenがセットで登録されてしまうらしく
以後再インストールしても、DeviceTokenの繋がりが有効となっており届いてしまう。
※要するにアンインストールしてもFirebase側との紐付きにおけるPush通知の設定がリセットされない様子。
Sandbox環境の運用が煩雑になってしまうので注意すること。

参考ページ

プッシュ通知に必要な証明書の作り方2016 - Qiita

27
18
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?