我正在开发Flutter应用程序。我需要使用firebase云消息集成通知。我可以在前台和后台发送通知。但是,在后台的情况下,onLaunch和onResume不会被触发。
这是我的JSON通知对象:
{
"sound": "default",
"registration_ids": userToken,
"collapse_key": "type_b",
"priority": "high",
"notification": {
"title": 'New message',
"body": messageContent,
},
"data": {
"type": "message",
"title": 'New message',
"body": messageContent,
"click_action": "FLUTTER_NOTIFICATION_CLICK",
}
}
下面是所有回调的代码:
_firebaseMessaging.configure(
onMessage: (Map<String, dynamic> message) async {
print("onMessage called");
if (message['data']['type'] == 'message') {
print(message['data']['type']);
setState(() {
newMessage = true;
});
}
},
onLaunch: (Map<String, dynamic> message) async {
print('onlaunch called');
// open message screen
},
onResume: (Map<String, dynamic> message) async {
print('onResume called');
// open message screen
},
);
当应用程序在后台时,我得到了这个日志:
W/FirebaseMessaging(12077(:应用程序尚未创建AndroidManifest.xml中设置的通知通道。将使用默认值。
E/FirebaseMessaging(12077(:通知挂起意图取消
但信道id已在AndroidManifest.xml
中设置
<meta-data android:name="com.google.firebase.messaging.default_notification_channel_id" android:value="@string/default_notification_channel_id"/>
意图过滤器也在那里:
<intent-filter>
<action android:name="FLUTTER_NOTIFICATION_CLICK" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
我不知道我在这里错过了什么。任何帮助都将是伟大的。非常感谢。
在AndroidManifest.xml中添加以下代码。不要删除其他代码,只添加此代码。
<intent-filter>
<action android:name="OPEN_ACTIVITY_1" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>