使用FCM发送多个通知,但在同一服务器端,有多种通知类型,可能具有不同的数据有效载荷和不同的通知标题,我希望通知管理器能够区分客户端的每个通知,并将它们发送到不同的Notification Channels
?
编辑我尝试设置notification_id,但它不起作用。
编辑:我可以在我的一个类中添加一个Data负载并限制通知,还可以添加一个switch语句,该语句将根据我的通知进行划分,但我需要在后台而不是前台处理数据。
@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
编辑:我转换成数据有效载荷并编辑了通知标题,以便能够切换上述编辑
创建notification_key,通过将特定组(通常是用户(映射到组的所有相关注册令牌来标识设备组。您可以在应用服务器或安卓客户端应用程序上创建通知密钥。
请查看此链接https://firebase.google.com/docs/cloud-messaging/android/device-group
我通过在标题上实现一个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;
}
}
回答标题中的问题:FCM from multiple senders but within the same app
如果sender == Firebase Project
,那么我认为这是不可能的。
如果sender == a client inside the same Firebase Project
(像一个iOS应用程序、多个服务器、另一个Android应用程序(,则您需要在Firebase项目中创建这些应用程序(适用于iOS和Android应用程序的(,并使用服务器密钥(适用于服务器的(
如果是sender == function
(如"更新实体A"、"显示促销通知"等(,则可以使用通知中的data
字段。我们通常在data
字段中添加一个action
字段。receiver
(iOS或Android应用程序(和sender
(通常是服务器,但也可以是移动应用程序(都知道可能的action
s的列表。Receiver
s知道收到它们时该怎么办(如果应用程序收到"更新实体a",则启动EntityAUpdateService(。