From dfd7fdeb6b46469d7507fb65b2f9db146e939ea4 Mon Sep 17 00:00:00 2001 From: XuqmGroup Date: Mon, 13 Jul 2026 16:44:25 +0800 Subject: [PATCH] fix(push): normalize OPPO action parameters --- .../service/provider/OppoPushProvider.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/push-service/src/main/java/com/xuqm/push/service/provider/OppoPushProvider.java b/push-service/src/main/java/com/xuqm/push/service/provider/OppoPushProvider.java index 49672a0..6b9bfc3 100644 --- a/push-service/src/main/java/com/xuqm/push/service/provider/OppoPushProvider.java +++ b/push-service/src/main/java/com/xuqm/push/service/provider/OppoPushProvider.java @@ -65,7 +65,7 @@ public class OppoPushProvider implements PushProvider { notification.put("off_line", true); notification.put("off_line_ttl", 259200); if (payload != null && !payload.isBlank()) { - notification.put("action_parameters", payload); + notification.put("action_parameters", normalizeActionParameters(payload)); } String channelId = options != null && options.channelId() != null && !options.channelId().isBlank() ? options.channelId() @@ -139,6 +139,22 @@ public class OppoPushProvider implements PushProvider { return java.util.HexFormat.of().formatHex(digest); } + private String normalizeActionParameters(String payload) throws Exception { + JsonNode parsed = runCatchingJson(payload); + if (parsed != null && parsed.isObject()) { + return objectMapper.writeValueAsString(parsed); + } + return objectMapper.writeValueAsString(Map.of("payload", payload)); + } + + private JsonNode runCatchingJson(String value) { + try { + return objectMapper.readTree(value); + } catch (Exception ignored) { + return null; + } + } + private String resolveConfig(String appKey, String key) { JsonNode config = configClient.loadServiceConfig(appKey, "ANDROID", "PUSH") .map(node -> node.path("vendors").path("oppo"))