使用FCM发送多个通知,但在同一服务器端内,说存在多种通知类型,可能具有不同的数据有效负载和不同的通知标题,我希望通知管理器能够区分服务器上的每个通知客户端并将其发送到其他Notification Channels
?
编辑 我尝试设置了notification_id,但它不起作用。
编辑: 我可以添加数据有效载荷并将通知限制在我的一个类中,并添加一个switch语句,该语句将根据我的Notification进行划分,但是我需要在后台而不是在前台处理数据。
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
notificationSwitch(remoteMessage);
}
private void notificationSwitch(RemoteMessage remoteMessage) {
RemoteMessage.Notification notification = remoteMessage.getNotification();
if (notification.getTitle().equals("TypeOne")){
TypeOneSendNotification(remoteMessage);
}
else{
TypeTwosendNotification(remoteMessage);
}
}
//Ofcourse we are able to switch based on the title, or different data payloads
编辑: 我将其转换为数据有效载荷并编辑了通知标题,以便能够切换以上编辑
答案 0 :(得分:1)
创建notification_key,它通过将特定组(通常是用户)映射到该组的所有关联注册令牌来标识设备组。您可以在应用服务器或Android客户端应用上创建通知键。
请检查此链接 https://firebase.google.com/docs/cloud-messaging/android/device-group
答案 1 :(得分:1)
我通过在标题上执行switch语句来完成此工作,但这只是一个技巧,但它确实可以工作
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
notificationSwitch(remoteMessage);
}
在我的通知开关功能中,因为我已经有remoteMessage作为参数,所以我将只实现发送者。
private void notificationSwitch(RemoteMessage remoteMessage) {
RemoteMessage.Notification notification = remoteMessage.getNotification();
if(notification.getTitle() != null){
switch (notification.getTitle()) {
case "SenderOne":
SenderOneSendNotification(remoteMessage);
break;
case "SenderTwo":
SenderTwoSendNotification(remoteMessage);
break;
case "SenderThree":
SenderThreeSendNotification(remoteMessage);
break;
case "SenderFour":
SenderFourSendNotificaation(remoteMessage);
break;
default:
DefaultSender(remoteMessage);
break;
}
}
答案 2 :(得分:0)
回答标题中的问题:FCM from multiple senders but within the same app
如果sender == Firebase Project
,那么我认为不可能。
如果sender == a client inside the same Firebase Project
(例如iOS应用,多个服务器,另一个Android应用),则需要在Firebase Project中创建这些应用(对于iOS和Android应用),并使用服务器密钥(对于服务器) )
如果sender == function
(例如“更新实体A”,“显示促销通知”等),则可以使用通知中的data
字段。我们通常在action
字段内添加一个data
字段。 receiver
(iOS或Android应用程序)和sender
(通常是服务器,但也可以是移动应用程序)都知道可能的action
的列表。 Receiver
个用户知道收到它们后该怎么做(如果应用程序收到“更新实体A”,则它将启动EntityAUpdateService)。