事象
開発中の Flutter アプリにバックグラウンド通知機能を実装したく、公式のdocを見ながら進めていた
https://firebase.flutter.dev/docs/messaging/usage#background-messages
// main.dart
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
await Firebase.initializeApp();
print('バックグラウンドでメッセージを受け取りました');
}
void main() async {
// 略
FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
runApp(MyApp());
// 略
}
FCMから通知を作成し公開したところ、デバッグコンソールを確認する限り、メッセージの受信に成功してそうではあるが Android エミュレーター上には通知が表示されない
D/FLTFireMsgReceiver(22809): broadcast received for message
W/FirebaseMessaging(22809): Missing Default Notification Channel metadata in AndroidManifest. Default value will be used.
I/flutter (22809): バックグラウンドでメッセージを受け取りました
結論(原因)
Android エミュレーターの設定で、該当アプリの通知がONになっていなかった
エミュレーターの Setting > Apps > {該当アプリ} > Notifications が OFF に設定されており、通知を受け取らない設定になっていたことが原因だった
つまり、アプリに通知自体は到達していたものの、エミュレーターの設定により通知が表示されない状態になっていた
この設定を ON にしてから再度通知を送ることで表示された 🎉
まとめ
これまで Android のデバイスに触れてきてないので単純なことに躓きがちw