我正在开发一个android聊天应用程序,该聊天室中有用户可以用来编写消息的聊天室。在聊天室中,他们可以选择订阅该室。目的是在将新消息添加到会议室时接收推送通知。
我已经通过Cloud Functions and Topics实现了此功能。这是我的代码:
exports.pushNotification = functions.database.ref('/messages/{pushId}/{id}').onCreate((change, context) => {
const pushId = context.params.pushId;
const originalText = change.val();
const payload = {
notification: {
title: originalText.message,
body: originalText.sender,
sound: "default"
},
};
const options = {
priority: "high",
timeToLive: 60 * 60 * 24
};
return admin.messaging().sendToTopic(pushId, payload, options);
});
问题 如果用户已订阅主题并发送消息,则该用户也将收到通知。如何防止发送邮件的用户收到通知?
答案 0 :(得分:1)
没有任何方法可以禁止向主题中的一个令牌发送消息。您可以将消息发送到主题,也可以不将其发送到主题。
您所能做的就是禁止在客户端上显示消息。为此,重要的是要了解不同的message types that FCM supports:
因此,要完全控制看到消息的人,可以使用数据消息。但对于聊天应用程序,您也可以考虑使用通知消息,因为在您发送通知时,用户经常会使用该应用程序发送消息。但是,可能存在一些极端情况,因此,如果这些情况妨碍了您:发送数据消息,并触发使用您自己的应用程序代码显示通知。
答案 1 :(得分:1)
您可以使用分隔符(如下面的示例)简单地在邮件中发送隐藏的userID
notification: {
title: originalText.message+ '____'+userID,
body: originalText.sender,
sound: "default"
}
然后在显示通知栏时
获取消息并像下面一样拆分它,然后如下所示放置消息
String message = mMessage.split("____")[0];
现在在通知栏中显示message
而不是mMessage