鸿蒙推送聊天消息时,支持打开具体的会话页面

This commit is contained in:
imndx
2024-04-24 15:21:47 +08:00
parent a738e2d028
commit 402dc952fd
4 changed files with 32 additions and 15 deletions

View File

@@ -88,13 +88,10 @@ public class HMPushServiceImpl implements HMPushService {
}
if (pushMessage.pushMessageType == PushMessageType.PUSH_MESSAGE_TYPE_VOIP_INVITE || pushMessage.pushMessageType == PushMessageType.PUSH_MESSAGE_TYPE_VOIP_INVITE) {
// TODO
String data = "TODO";
VoipPayload voipPayload = VoipPayload.buildAlertPayload(pushMessage.getDeviceToken(), data);
VoipPayload voipPayload = VoipPayload.buildAlertPayload(pushMessage);
httpPost(this.pushUrl, jwt, 10, voipPayload.toString(), 10000, 10000);
} else {
String[] titleAndContent = Utility.getPushTitleAndContent(pushMessage);
AlertPayload alertPayload = AlertPayload.buildAlertPayload(pushMessage.getDeviceToken(), titleAndContent[0], titleAndContent[1]);
AlertPayload alertPayload = AlertPayload.buildAlertPayload(pushMessage);
String response = httpPost(this.pushUrl, jwt, 0, alertPayload.toString(), 10000, 10000);
LOG.info("Push to {} response {}", pushMessage.getDeviceToken(), response);
}

View File

@@ -1,11 +1,16 @@
package cn.wildfirechat.push.hm.payload;
import cn.wildfirechat.push.PushMessage;
import cn.wildfirechat.push.PushMessageType;
import cn.wildfirechat.push.Utility;
import cn.wildfirechat.push.hm.payload.internal.ClickAction;
import cn.wildfirechat.push.hm.payload.internal.Notification;
import cn.wildfirechat.push.hm.payload.internal.Payload;
import cn.wildfirechat.push.hm.payload.internal.Target;
import com.google.gson.Gson;
import org.json.simple.JSONObject;
import java.text.MessageFormat;
import java.util.ArrayList;
@@ -18,17 +23,31 @@ public class AlertPayload {
return new Gson().toJson(this);
}
public static AlertPayload buildAlertPayload(String token, String title, String body) {
public static AlertPayload buildAlertPayload(PushMessage pushMessage) {
Notification notification = new Notification();
notification.title = title;
notification.body = body;
String[] titleAndBody = Utility.getPushTitleAndContent(pushMessage);
notification.title = titleAndBody[0];
notification.body = titleAndBody[1];
ClickAction clickAction = new ClickAction();
if (pushMessage.pushMessageType == PushMessageType.PUSH_MESSAGE_TYPE_NORMAL) {
JSONObject data = new JSONObject();
JSONObject conv = new JSONObject();
conv.put("type", pushMessage.convType);
conv.put("target", pushMessage.target);
conv.put("line", pushMessage.line);
data.put("conversation", conv);
clickAction.data = data;
} else {
// TODO
}
notification.clickAction = clickAction;
Target target = new Target();
target.token = new ArrayList<>();
target.token.add(token);
target.token.add(pushMessage.deviceToken);
AlertPayload alertPayload = new AlertPayload();
alertPayload.payload = new Payload();

View File

@@ -1,7 +1,6 @@
package cn.wildfirechat.push.hm.payload;
import cn.wildfirechat.push.hm.payload.internal.ClickAction;
import cn.wildfirechat.push.hm.payload.internal.Notification;
import cn.wildfirechat.push.PushMessage;
import cn.wildfirechat.push.hm.payload.internal.Payload;
import cn.wildfirechat.push.hm.payload.internal.Target;
import com.google.gson.Gson;
@@ -18,14 +17,14 @@ public class VoipPayload {
return new Gson().toJson(this);
}
public static VoipPayload buildAlertPayload(String token, String extraData) {
public static VoipPayload buildAlertPayload(PushMessage pushMessage) {
Target target = new Target();
target.token = new ArrayList<>();
target.token.add(token);
target.token.add(pushMessage.deviceToken);
VoipPayload voipPayload = new VoipPayload();
voipPayload.payload = new Payload();
voipPayload.payload.extraData = extraData;
voipPayload.payload.extraData = "TODO";
voipPayload.target = target;
return voipPayload;

View File

@@ -1,5 +1,7 @@
package cn.wildfirechat.push.hm.payload.internal;
import org.json.simple.JSONObject;
public class ClickAction {
/**
* 0打开应用首页
@@ -10,5 +12,5 @@ public class ClickAction {
public String action;
public String uri;
public String data;
public JSONObject data;
}