LoginSignup
1
2

More than 3 years have passed since last update.

Flutterのfirebase_messaging(FCM)がiOS13で動作しない不具合への対処

Last updated at Posted at 2020-06-16

現時点では解決してない & 解決策が不明瞭だったので、忘備録も踏まえて投稿します。

起きたバグ

Flutterでfirebase_messageを利用した際に、iOSでPush通知が一切受け取れない事象が発生しました。(foreground / background ともに)Notification Trayにも表示されず、Callbackも呼ばれませんでした。
Androidでは問題なく動いています。

環境

  • firebase_messaging 6.0.16
  • Flutter(stable, v1.17.1)
  • iOS 13.5 iPhoneXR / iOS 13.4 iPhoneX / iOS 13.3 iPhone7
$ flutter doctor
[✓] Flutter (Channel stable, v1.17.1, on Mac OS X 10.15.5 19F101, locale ja-JP)
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[✓] Xcode - develop for iOS and macOS (Xcode 11.4)
[✓] Android Studio (version 3.6)

解決方法

1. Firebaseでの認証方法をAuthKeyからCertificatesに変更する

現在は、AuthKey(.p8)での認証が推奨されていますが、従来のCertificates(.p12)を利用します。Firebase内の Setting > Cloud Messaging > iOSアプリの設定 で設定できます。

これで、background時のPush通知が来るようになります。ただCallbackは一切呼ばれませんでした。
なぜ動くのかはわかりません。

2. AppDelegate内のUNUserNotificationCenterのdelegateを削除する

Firebaseのドキュメントでは、UNUserNotificationCenter.current().delegate = selfをAppDelegateに追記することが推奨されていますが、こちらを削除します。

これでCallbackが呼ばれるようになります。

その他メモ

  • Firebase Consoleで動作確認が可能です
  • TestFlightでインストールしたらいけた、というコメントもありますが、自分の場合はワークしませんでした。

参考

チェックリストとして参考になったGitHubのコメント

[firebase_messaging] Dart side callbacks for FCM are not called on iOS if a message has a notification field

関連イシュー(めっちゃ読み込んだ)

[firebase_messaging] iOS 13 push notification NOT working

1
2
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
1
2