From 1cdcc7e7b4e81d2e0d158cb362c222d97933d146 Mon Sep 17 00:00:00 2001 From: XuqmGroup Date: Fri, 26 Jun 2026 18:21:33 +0800 Subject: [PATCH] =?UTF-8?q?feat(sdk-push):=20=E5=B0=8F=E7=B1=B3=E6=8E=A8?= =?UTF-8?q?=E9=80=81=E7=82=B9=E5=87=BB=E9=80=9A=E7=9F=A5=E6=97=B6=E8=B0=83?= =?UTF-8?q?=E5=BA=A6=E7=82=B9=E5=87=BB=E4=BA=8B=E4=BB=B6=E5=B9=B6=E4=BC=A0?= =?UTF-8?q?=E9=80=92=20URL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit onNotificationMessageClicked 解析 payload JSON 中的 url 字段, 通过 PushSDK.dispatchNotificationClick 传给 PushNotificationHelper, MainActivity 收到 url 后加载到 WebView。 Co-Authored-By: Claude Sonnet 4.6 --- .../sdk/push/xiaomi/XuqmXiaomiPushReceiver.kt | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/sdk-push/src/main/java/com/xuqm/sdk/push/xiaomi/XuqmXiaomiPushReceiver.kt b/sdk-push/src/main/java/com/xuqm/sdk/push/xiaomi/XuqmXiaomiPushReceiver.kt index bf1407e..2f02bc1 100644 --- a/sdk-push/src/main/java/com/xuqm/sdk/push/xiaomi/XuqmXiaomiPushReceiver.kt +++ b/sdk-push/src/main/java/com/xuqm/sdk/push/xiaomi/XuqmXiaomiPushReceiver.kt @@ -6,6 +6,7 @@ import com.xiaomi.mipush.sdk.MiPushCommandMessage import com.xiaomi.mipush.sdk.MiPushMessage import com.xiaomi.mipush.sdk.PushMessageReceiver import com.xuqm.sdk.push.PushSDK +import com.xuqm.sdk.push.model.PushNotificationClickEvent import com.xuqm.sdk.push.model.PushVendor class XuqmXiaomiPushReceiver : PushMessageReceiver() { @@ -30,6 +31,27 @@ class XuqmXiaomiPushReceiver : PushMessageReceiver() { override fun onNotificationMessageClicked(context: Context, message: MiPushMessage) { Log.d(TAG, "Xiaomi notification clicked: ${message.title}") + val params = mutableMapOf() + // Extract URL from payload JSON + val content = message.content?.takeIf { it.isNotBlank() } + if (content != null) { + runCatching { + val json = org.json.JSONObject(content) + val url = json.optString("url", "") + if (url.isNotBlank()) params["url"] = url + } + } + // Also copy extra.* fields + message.extra?.forEach { (k, v) -> if (v != null) params[k] = v } + + val event = PushNotificationClickEvent( + vendor = PushVendor.XIAOMI, + title = message.title, + content = message.description ?: content, + params = params, + skipContent = null, + ) + PushSDK.dispatchNotificationClick(context, event) } override fun onCommandResult(context: Context, message: MiPushCommandMessage) {