qq_41295110
2026-02-26 423c1948a631cff298e6348cc55626f5149c111a
App.vue
@@ -7,6 +7,7 @@
        getToken,
        getUserInfo
    } from "./utils/auth";
    import getuiUtils from "./utils/getuiUtils";
    export default {
        onLaunch: function() {
            console.log('App Launch')
@@ -38,6 +39,36 @@
            //     });
            // }
            // #endif
            // #ifdef APP-PLUS || APP
            // 监听 App 启动时的推送参数(冷启动:App 关闭后点击通知启动)
            const launchOpts = plus.runtime.launchArguments;
            if (launchOpts && launchOpts.payload) {
                this.handlePushJump(launchOpts.payload); // 处理跳转
            }
            // 监听通知点击事件(热启动:App 后台运行时点击通知)
            plus.push.addEventListener("click", (msg) => {
                let payload = {};
                console.log('msg: ', msg);
                // 兼容不同格式的 payload(本地推送 vs 远程推送)
                if (typeof msg.payload === "string") {
                    payload = JSON.parse(msg.payload); // 远程推送可能是字符串,需解析
                } else {
                    payload = msg.payload; // 本地推送是对象
                }
                this.handlePushJump(payload); // 处理跳转
            });
            // 个推v1版本只能通过透传传参
            plus.push.addEventListener('receive', (msg) => {
                console.log('收到 V1 版本透传消息:', msg);
                // 仅透传模板需要(通知模板无需处理)
                if (msg.payload) {
                    this.handlePushJump(msg.payload);
                }
            }, false);
            // #endif
        },
        onShow: function() {
            console.log('App Show')
@@ -45,6 +76,29 @@
        },
        onHide: function() {
            console.log('App Hide')
        },
        methods: {
            // 处理通知跳转逻辑
            handlePushJump(payload) {
                console.log('payload-enter: ', payload);
                if (!payload || !payload.pagePath) return;
                // 确保 App 处于前台
                // plus.runtime.foreground();
                // 跳转到指定页面
                setTimeout(() => {
                    uni.navigateTo({
                        url: `${payload.pagePath}?itemId=${payload.itemId}`, // 携带参数
                        fail: (err) => {
                            // 若页面栈满(最多10层),使用 redirectTo 替换当前页面
                            uni.redirectTo({
                                url: `${payload.pagePath}?itemId=${payload.itemId}`,
                            });
                        }
                    });
                }, 300)
            }
        }
    }
</script>