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) {