feat(sdk-push): 小米推送点击通知时调度点击事件并传递 URL

onNotificationMessageClicked 解析 payload JSON 中的 url 字段,
通过 PushSDK.dispatchNotificationClick 传给 PushNotificationHelper,
MainActivity 收到 url 后加载到 WebView。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
这个提交包含在:
XuqmGroup 2026-06-26 18:21:33 +08:00
父节点 90975edc50
当前提交 1cdcc7e7b4

查看文件

@ -6,6 +6,7 @@ import com.xiaomi.mipush.sdk.MiPushCommandMessage
import com.xiaomi.mipush.sdk.MiPushMessage import com.xiaomi.mipush.sdk.MiPushMessage
import com.xiaomi.mipush.sdk.PushMessageReceiver import com.xiaomi.mipush.sdk.PushMessageReceiver
import com.xuqm.sdk.push.PushSDK import com.xuqm.sdk.push.PushSDK
import com.xuqm.sdk.push.model.PushNotificationClickEvent
import com.xuqm.sdk.push.model.PushVendor import com.xuqm.sdk.push.model.PushVendor
class XuqmXiaomiPushReceiver : PushMessageReceiver() { class XuqmXiaomiPushReceiver : PushMessageReceiver() {
@ -30,6 +31,27 @@ class XuqmXiaomiPushReceiver : PushMessageReceiver() {
override fun onNotificationMessageClicked(context: Context, message: MiPushMessage) { override fun onNotificationMessageClicked(context: Context, message: MiPushMessage) {
Log.d(TAG, "Xiaomi notification clicked: ${message.title}") Log.d(TAG, "Xiaomi notification clicked: ${message.title}")
val params = mutableMapOf<String, String>()
// 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) { override fun onCommandResult(context: Context, message: MiPushCommandMessage) {