From e1680fb3ca146419ad7ea3872dd6676391039b52 Mon Sep 17 00:00:00 2001 From: fxy060608 Date: Tue, 19 Jul 2022 18:52:34 +0800 Subject: [PATCH] fix(app): onPushMessage --- .../packages/uni-push/dist/uni-push.es.js | 21 +++++++++++++++++++ src/core/service/api/plugin/push.js | 18 ++++++++++------ 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/packages/vue-cli-plugin-uni/packages/uni-push/dist/uni-push.es.js b/packages/vue-cli-plugin-uni/packages/uni-push/dist/uni-push.es.js index e0f491cb0..3e8146498 100644 --- a/packages/vue-cli-plugin-uni/packages/uni-push/dist/uni-push.es.js +++ b/packages/vue-cli-plugin-uni/packages/uni-push/dist/uni-push.es.js @@ -100,6 +100,26 @@ e?.onClose(t); var GtPush = /*@__PURE__*/getDefaultExportFromCjs(gtpushMin); +function initPushNotification() { + // 仅 App 端 + if (typeof plus !== 'undefined' && plus.push) { + plus.push.addEventListener('click', (result) => { + // @ts-expect-error + uni.invokePushCallback({ + type: 'click', + message: result, + }); + }); + uni.onPushMessage((res) => { + if (res.type === 'receive' && res.data && res.data.force_notification) { + // 创建通知栏 + uni.createPushMessage(res.data); + res.stopped = true; + } + }); + } +} + // if (process.env.UNI_PUSH_DEBUG) { // GtPush.setDebugMode(true) // } @@ -119,6 +139,7 @@ if (!appid) { }); } else { + initPushNotification(); GtPush.init({ appid, onError: (res) => { diff --git a/src/core/service/api/plugin/push.js b/src/core/service/api/plugin/push.js index 133ad49e4..617ab4268 100644 --- a/src/core/service/api/plugin/push.js +++ b/src/core/service/api/plugin/push.js @@ -27,12 +27,18 @@ export function invokePushCallback ( cidErrMsg = args.errMsg invokeGetPushCidCallbacks(cid, args.errMsg) } else if (args.type === 'pushMsg') { - onPushMessageCallbacks.forEach((callback) => { - callback({ - type: 'receive', - data: normalizePushMessage(args.message) - }) - }) + const message = { + type: 'receive', + data: normalizePushMessage(args.message) + } + for (let i = 0; i < onPushMessageCallbacks.length; i++) { + const callback = onPushMessageCallbacks[i] + callback(message) + // 该消息已被阻止 + if (message.stopped) { + break + } + } } else if (args.type === 'click') { onPushMessageCallbacks.forEach((callback) => { callback({ -- GitLab