通过 FirebaseMessaging 后台消息显示 iOS 应用徽章
Showing an iOS app badge through FirebaseMessaging background messages
我正在用 Flutter 开发一个应用程序,运行 遇到了一些问题。我想要发生的是
- 通过一些事件,使用 FCM 向用户发送推送通知。我同时发送
notification
和 data
消息,以便调用 onBackgroundMessage
处理程序。
- 每次收到消息时,处理程序都会将徽章计数加 1。
我的消息有效负载如下所示:
const payload = {
notification: {
title: String(data["title"]),
body: String(data["message"]),
},
data: {
title: data["title"],
body: data["message"],
},
}
const payloadBackground = {
data: {
title: data["title"],
body: data["message"],
},
content_available: true,
priority: "high"
}
这是 运行 作为 Firebase 云函数使用 FirebaseMessaging
:
admin.messaging().sendToDevice(receiverRegistrationTokens, payloadBackground).catch(err => console.error(err));
return admin.messaging().sendToDevice(receiverRegistrationTokens, payload).then( response => {
console.log(receiver + " has registrationTokens: " + receiverRegistrationTokens);
return null;
})
在客户端,通知是这样处理的:
Future<void> backgroundNotificationHandler(RemoteMessage message) {
FlutterAppBadger.updateBadgeCount(1);
debugPrint("Received notification: " + message.data.toString());
return null;
}
AwesomeNotifications().initialize(
// set the icon to null if you want to use the default app icon
'resource://drawable/res_app_icon',
[
NotificationChannel(
channelKey: 'basic_channel',
channelName: 'Basic notifications',
channelDescription: 'Notification channel for basic tests',
defaultColor: Color(0xFF9D50DD),
ledColor: Colors.white,
enableLights: true,
)
]);
FirebaseMessaging.onBackgroundMessage(backgroundNotificationHandler);
出于某种原因,iOS 上的徽章数量没有增加(根本没有徽章)。但是推送通知显示正确。关于如何解决这个问题的任何想法?非常感谢!
我在我的环境中尝试过,以下 Node.js
Firebase 可调用函数确实会在真实 iOS 设备上触发背景消息,如果我向背景消息添加 print
处理程序,我可以在调试控制台中看到输出:
// send a test message
exports.testMessage = functions.https.onCall(async (data, context) => {
try {
await admin.messaging().sendToDevice(
'<TOKENS>', {
data: {
key1: 'value1',
},
notification: {
title: 'Title1',
body: 'Body1'
}
}, {
contentAvailable: true,
priority: "high",
});
} catch (e) {
console.log(e);
}
});
我正在用 Flutter 开发一个应用程序,运行 遇到了一些问题。我想要发生的是
- 通过一些事件,使用 FCM 向用户发送推送通知。我同时发送
notification
和data
消息,以便调用onBackgroundMessage
处理程序。 - 每次收到消息时,处理程序都会将徽章计数加 1。
我的消息有效负载如下所示:
const payload = {
notification: {
title: String(data["title"]),
body: String(data["message"]),
},
data: {
title: data["title"],
body: data["message"],
},
}
const payloadBackground = {
data: {
title: data["title"],
body: data["message"],
},
content_available: true,
priority: "high"
}
这是 运行 作为 Firebase 云函数使用 FirebaseMessaging
:
admin.messaging().sendToDevice(receiverRegistrationTokens, payloadBackground).catch(err => console.error(err));
return admin.messaging().sendToDevice(receiverRegistrationTokens, payload).then( response => {
console.log(receiver + " has registrationTokens: " + receiverRegistrationTokens);
return null;
})
在客户端,通知是这样处理的:
Future<void> backgroundNotificationHandler(RemoteMessage message) {
FlutterAppBadger.updateBadgeCount(1);
debugPrint("Received notification: " + message.data.toString());
return null;
}
AwesomeNotifications().initialize(
// set the icon to null if you want to use the default app icon
'resource://drawable/res_app_icon',
[
NotificationChannel(
channelKey: 'basic_channel',
channelName: 'Basic notifications',
channelDescription: 'Notification channel for basic tests',
defaultColor: Color(0xFF9D50DD),
ledColor: Colors.white,
enableLights: true,
)
]);
FirebaseMessaging.onBackgroundMessage(backgroundNotificationHandler);
出于某种原因,iOS 上的徽章数量没有增加(根本没有徽章)。但是推送通知显示正确。关于如何解决这个问题的任何想法?非常感谢!
我在我的环境中尝试过,以下 Node.js
Firebase 可调用函数确实会在真实 iOS 设备上触发背景消息,如果我向背景消息添加 print
处理程序,我可以在调试控制台中看到输出:
// send a test message
exports.testMessage = functions.https.onCall(async (data, context) => {
try {
await admin.messaging().sendToDevice(
'<TOKENS>', {
data: {
key1: 'value1',
},
notification: {
title: 'Title1',
body: 'Body1'
}
}, {
contentAvailable: true,
priority: "high",
});
} catch (e) {
console.log(e);
}
});