diff --git a/broker/src/main/java/cn/wildfirechat/push/PushMessage.java b/broker/src/main/java/cn/wildfirechat/push/PushMessage.java index f2bb3050..1c092742 100644 --- a/broker/src/main/java/cn/wildfirechat/push/PushMessage.java +++ b/broker/src/main/java/cn/wildfirechat/push/PushMessage.java @@ -23,6 +23,7 @@ public class PushMessage { //推送类型,android推送分为小米/华为/魅族等。ios分别为开发和发布。 public int pushType; public String pushContent; + public String pushData; public int unReceivedMsg; public int mentionedType; public String packageName; diff --git a/broker/src/main/java/io/moquette/spi/impl/MessagesPublisher.java b/broker/src/main/java/io/moquette/spi/impl/MessagesPublisher.java index 9ad876e4..7273ea2c 100755 --- a/broker/src/main/java/io/moquette/spi/impl/MessagesPublisher.java +++ b/broker/src/main/java/io/moquette/spi/impl/MessagesPublisher.java @@ -159,7 +159,7 @@ public class MessagesPublisher { } } - private void publish2Receivers(String sender, int conversationType, String target, int line, long messageHead, Collection receivers, String pushContent, String exceptClientId, int pullType, int messageContentType, long serverTime, int mentionType, List mentionTargets, int persistFlag) { + private void publish2Receivers(String sender, int conversationType, String target, int line, long messageHead, Collection receivers, String pushContent, String pushData, String exceptClientId, int pullType, int messageContentType, long serverTime, int mentionType, List mentionTargets, int persistFlag) { if (persistFlag == Transparent) { publishTransparentMessage2Receivers(messageHead, receivers, pullType); return; @@ -332,7 +332,7 @@ public class MessagesPublisher { name = fd.getAlias(); } } - this.messageSender.sendPush(sender, conversationType, target, line, messageHead, targetSession.getClientID(), pushContent, messageContentType, serverTime, name, targetName, targetSession.getUnReceivedMsgs(), curMentionType, isHiddenDetail, targetSession.getLanguage()); + this.messageSender.sendPush(sender, conversationType, target, line, messageHead, targetSession.getClientID(), pushContent, pushData, messageContentType, serverTime, name, targetName, targetSession.getUnReceivedMsgs(), curMentionType, isHiddenDetail, targetSession.getLanguage()); } } @@ -545,7 +545,7 @@ public class MessagesPublisher { message.getConversation().getType(), message.getConversation().getTarget(), message.getConversation().getLine(), messageId, receivers, - pushContent, exceptClientId, pullType, message.getContent().getType(), message.getServerTimestamp(), message.getContent().getMentionedType(), message.getContent().getMentionedTargetList(), message.getContent().getPersistFlag()); + pushContent, message.getContent().getPushData(), exceptClientId, pullType, message.getContent().getType(), message.getServerTimestamp(), message.getContent().getMentionedType(), message.getContent().getMentionedTargetList(), message.getContent().getPersistFlag()); } diff --git a/broker/src/main/java/io/moquette/spi/impl/PersistentQueueMessageSender.java b/broker/src/main/java/io/moquette/spi/impl/PersistentQueueMessageSender.java index 51975555..5aa8c28e 100755 --- a/broker/src/main/java/io/moquette/spi/impl/PersistentQueueMessageSender.java +++ b/broker/src/main/java/io/moquette/spi/impl/PersistentQueueMessageSender.java @@ -37,10 +37,11 @@ class PersistentQueueMessageSender { this.connectionDescriptorStore = connectionDescriptorStore; } - void sendPush(String sender, int conversationType, String target, int line, long messageHead, String deviceId, String pushContent, int messageContentType, long serverTime, String senderName, String targetName, int unReceivedMsg, int mentionType, boolean isHiddenDetail, String language) { + void sendPush(String sender, int conversationType, String target, int line, long messageHead, String deviceId, String pushContent, String pushData, int messageContentType, long serverTime, String senderName, String targetName, int unReceivedMsg, int mentionType, boolean isHiddenDetail, String language) { LOG.info("Send push to {}, message from {}", deviceId, sender); PushMessage pushMessage = new PushMessage(sender, conversationType, target, line, messageContentType, serverTime, senderName, targetName, unReceivedMsg, mentionType, isHiddenDetail, language); pushMessage.pushContent = pushContent; + pushMessage.pushData = pushData; PushServer.getServer().pushMessage(pushMessage, deviceId, pushContent); } diff --git a/common/src/main/java/cn/wildfirechat/pojos/MessagePayload.java b/common/src/main/java/cn/wildfirechat/pojos/MessagePayload.java index 52f30fbd..be5cf02d 100644 --- a/common/src/main/java/cn/wildfirechat/pojos/MessagePayload.java +++ b/common/src/main/java/cn/wildfirechat/pojos/MessagePayload.java @@ -20,6 +20,7 @@ public class MessagePayload { private int type; private String searchableContent; private String pushContent; + private String pushData; private String content; private String base64edData; private int mediaType; @@ -127,6 +128,14 @@ public class MessagePayload { this.extra = extra; } + public String getPushData() { + return pushData; + } + + public void setPushData(String pushData) { + this.pushData = pushData; + } + public WFCMessage.MessageContent toProtoMessageContent() { WFCMessage.MessageContent.Builder builder = WFCMessage.MessageContent.newBuilder() .setType(type) @@ -149,6 +158,8 @@ public class MessagePayload { builder.addAllMentionedTarget(mentionedTarget); if (!StringUtil.isNullOrEmpty(extra)) builder.setExtra(extra); + if (!StringUtil.isNullOrEmpty(pushData)) + builder.setPushData(pushData); return builder.build(); } @@ -172,6 +183,7 @@ public class MessagePayload { payload.mentionedTarget = new ArrayList<>(); payload.mentionedTarget.addAll(protoContent.getMentionedTargetList()); payload.extra = protoContent.getExtra(); + payload.pushData = protoContent.getPushData(); return payload; } }