0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

FCMトークンを使用したPush通知ができない問題

Posted at

現状の問題

  • Androidエミュレータだと通知がくる
  • iPhoneの実機やシミュレータだとpush通知が届かない
  • どちらもFCMトークンは取得できてる(ログ出力で確認済)

確認したこと

  • アプリで取得したFCMトークンを使用してFirebaseから直接push通知を送ってみたが、通知が来ない
  • ログ確認
    • FCMトークンが取得されているかの確認
    • APNSトークンが取得できているか
  • FirebaseとXcodeのBundleIDが一致しているか
  • FirebaseにAPNsトークンが設定されているか

わかったこと

APNsトークンとは

iOSデバイス専用の「Push通知の宛先住所」
AppleのPush通知サーバーが、「特定のiOSデバイス」の「特定のアプリ」に対して発行する、一意のIDのこと

APNsトークンとFCMトークンの紐付けの流れ

  1. 【APNsトークンの取得】
    アプリ(Firebase SDK)は、まずiOSに対して「通知の許可」を求め、AppleからネイティブのAPNsトークンを取得する。

  2. 【トークンの交換】
    その取得したAPNsトークンをFCMサーバーに送信し、FCMトークンを発行する

  3. 【通知の送信】
    これによってiOS・Androidを区別せず、FCMトークンを使ってFCMサーバーに通知を送信する。

  4. 【FCMからAPNsへの転送】
    FCMサーバーは、受け取ったFCMトークンがiOSデバイスのものであることを認識すると、紐付けられたAPNsトークンを探し出して、通知内容をAPNsが要求する形式に変換してAPNsサーバーに転送する。

  5. 【APNsからデバイスへの通知】
    最終的に、APNsがデバイスに通知を届けます。

Android と iOS のバックグラウンド通知処理の違い

  • Android:
    • FCM サーバー → Google Play Services → システム通知表示
    • バックグラウンド通知は Google Play Services が自動処理
  • iOS:
    • APNs サーバー → iOS システム → アプリのバックグラウンドハンドラー
    • バックグラウンド処理は手動設定が必須

BundleIDとは

  • そのアプリを一意に識別するためのID。
  • 逆ドメイン型が主流

解決

Firebaseに本番用のAPNs認証キーは設定してあったが、開発用APNs認証キーの設定がされてなかったことが原因

参考にしたサイト

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?