Closed7

[iOS] Firebase Cloud Messaging でプッシュ通知が届かない

Yusuke AriyoshiYusuke Ariyoshi

既存アプリにFirebase/Messaging を導入したものの、Push 通知が実機に届かない。

  • Apple Push Notification Authentication Key をFirebase Console で登録
  • Firebase Messaging からPush 通知を送信

環境

  • Xcode 12.5
  • iOS 14.5
  • Firebase/Core 8.0.0
  • Firebaes/Messaging 8.0.0
Yusuke AriyoshiYusuke Ariyoshi
  • cURLを使うデバッグ方法でAPNs にリクエストを送信したところ、BadDeviceToken エラーが返ってくる。
  • cURLを使うデバッグ方法でFCM にリクエストを送信したところ、success が返ってくる。
Yusuke AriyoshiYusuke Ariyoshi

以下の対応を行って構築をやり直したところ、Push通知が動作するようになった。

  • Apple Push Notification Authentication Key を使う方法ではなく、Apple Push Notification Service SSL
    を使う方法にする (Firebase へアップロードしたKey を削除し、 開発・本番用の証明書の作成やFirebase への各証明書のアップロードなど行う)
  • AppDelegate.swiftdidRegisterForRemoteNotificationsWithDeviceToken デリゲートメソッドにMessaging.messaging().apnsToken = deviceToken を追加する
Yusuke AriyoshiYusuke Ariyoshi
  • Apple Push Notification Authentication Key の方が推奨されている方法なので、できれば移行したい
  • Messaging.messaging().apnsToken = deviceToken をなぜ手動で実行しないといけないのか分かっていない
    • 「「APNs トークンと登録トークンとのマッピング」はFirebase SDK がやってくれるはずなのだが、上手く動いていない。実装方法間違いか、SDKの不具合?
Yusuke AriyoshiYusuke Ariyoshi

改めて検証したところ、Apple Push Notification Authentication Key を使う方法で動作しそう。
ただしAPNs トークンとFCMトークンの手動マッピングを行わないと通知が届かなかった。

このスクラップは2021/05/24にクローズされました