android - 应用打开时接收 FCM 通知的问题
问题描述
我在 Android Studio 中编写了一个测试 Flutter 应用程序来接收来自 Firebase 的推送通知。完成后,我通过 AVD 将它安装在新的模拟器上,并测试了在应用程序终止时收到推送通知。那工作得很好。当应用程序在后台打开时。再次成功。但奇怪的是,当应用程序打开时,推送通知似乎正在发送到设备,因为我D/FLTFireMsgReceiver( 6020): broadcast received for message
在发布推送通知后收到,但它从不显示任何内容,我得到了
W/FirebaseMessaging( 6020): Unable to log event: analytics library is missing
W/FirebaseMessaging( 6020): Unable to log event: analytics library is missing
我试过了:
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
print('A new onMessage event was published!');})
我什至没有得到打印线。
我做错了什么会导致通知仅在应用程序未在前台运行时才起作用?
解决方案
在 pubspec.yaml 上添加这些库并使用下面的代码
firebase_analytics:^8.1.2 firebase_messaging:^10.0.0
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
FirebaseMessaging.onBackgroundMessage(_messageHandler);
runApp(MyApp());
}
initialize() async {
FirebaseMessaging messaging = FirebaseMessaging.instance;
FirebaseMessaging.onMessage.listen((RemoteMessage event) {
print("message recieved");
print(event.notification!.body);
});
FirebaseMessaging.onMessageOpenedApp.listen((message) {
print('Message clicked!');
});
FirebaseMessaging.onMessage.listen((RemoteMessage event) {
print("message recieved");
print(event.notification!.body);
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text("Notification"),
content: Text(event.notification!.body!),
actions: [
TextButton(
child: Text("Ok"),
onPressed: () {
Navigator.of(context).pop();
},
)
],
);
});
});
}
@override
void initState() {
super.initState();
initialize();
}
推荐阅读
- powerbi - 大于 0 的值显示在折线图的 0 轴下方和 PowerBI 上的堆积柱形图
- javascript - Node.js mysql - 嵌套查询和异步/等待
- firebase - 如何解析 firebase 云功能上的 multipart/form-data?
- azure-functions - Application Insights TelemetryConfiguration.Active
- sql - 从 Postgresql 表中的多个列字段中提取键、值
- css - SCSS 编译抛出语法错误 is not a valid CSS value
- mysql - 将列从 varchar 更改为 int
- php - 如何在 laravel 中使用 Guzzlehttp 测试个人访问令牌
- angular - 如何获取 ng-template(Angular 6) 中的值?
- python-3.x - 在经过一些 epoch 后训练时,参数会射到无穷大