feat(push): 添加推送通知点击 URL 跳转支持

- 新增 PushDeepLinkHandler:通过 getLaunchIntentForPackage 启动宿主 App
  并携带 xuqm_push_url extra,供 MainActivity 读取后导航 WebView
- XuqmVivoPushReceiver.onNotificationMessageClicked 提取 params["url"]
  或 skipContent,调用 PushDeepLinkHandler.open()

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
这个提交包含在:
XuqmGroup 2026-06-25 18:00:33 +08:00
父节点 978312956c
当前提交 f63ae07bcb
共有 2 个文件被更改,包括 28 次插入1 次删除

查看文件

@ -0,0 +1,20 @@
package com.xuqm.sdk.push
import android.content.Context
import android.content.Intent
import android.util.Log
object PushDeepLinkHandler {
const val EXTRA_PUSH_URL = "xuqm_push_url"
private const val TAG = "PushDeepLinkHandler"
fun open(context: Context, url: String) {
val pm = context.packageManager
val intent = pm.getLaunchIntentForPackage(context.packageName) ?: return
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_SINGLE_TOP
intent.putExtra(EXTRA_PUSH_URL, url)
Log.d(TAG, "Opening app with push URL: $url")
context.startActivity(intent)
}
}

查看文件

@ -1,10 +1,12 @@
package com.xuqm.sdk.push.vivo package com.xuqm.sdk.push.vivo
import android.content.Context import android.content.Context
import android.content.Intent
import android.util.Log import android.util.Log
import com.vivo.push.model.UnvarnishedMessage import com.vivo.push.model.UnvarnishedMessage
import com.vivo.push.model.UPSNotificationMessage import com.vivo.push.model.UPSNotificationMessage
import com.vivo.push.sdk.OpenClientPushMessageReceiver import com.vivo.push.sdk.OpenClientPushMessageReceiver
import com.xuqm.sdk.push.PushDeepLinkHandler
import com.xuqm.sdk.push.PushSDK import com.xuqm.sdk.push.PushSDK
import com.xuqm.sdk.push.model.PushVendor import com.xuqm.sdk.push.model.PushVendor
@ -25,7 +27,12 @@ class XuqmVivoPushReceiver : OpenClientPushMessageReceiver() {
} }
override fun onNotificationMessageClicked(context: Context, message: UPSNotificationMessage) { override fun onNotificationMessageClicked(context: Context, message: UPSNotificationMessage) {
Log.d(TAG, "Vivo notification clicked: ${message.title}") val url = message.params?.get("url")?.takeIf { it.isNotBlank() }
?: message.skipContent?.takeIf { it.isNotBlank() }
Log.d(TAG, "Vivo notification clicked: ${message.title}, url=$url")
if (url != null) {
PushDeepLinkHandler.open(context, url)
}
} }
companion object { companion object {