From b27d3a7c05f1f0730f472b2e2c57912f069e2a6a Mon Sep 17 00:00:00 2001 From: fxy060608 Date: Tue, 19 Jul 2022 18:55:49 +0800 Subject: [PATCH] fix(app): onPushMessage --- .gitignore | 1 + packages/uni-api/src/service/plugin/push.ts | 19 ++++++---- packages/uni-app-plus/dist/uni.runtime.esm.js | 18 ++++++---- packages/uni-h5/dist/uni-h5.es.js | 17 +++++---- packages/uni-mp-alipay/dist/uni.api.esm.js | 18 ++++++---- packages/uni-mp-baidu/dist/uni.api.esm.js | 18 ++++++---- packages/uni-mp-kuaishou/dist/uni.api.esm.js | 18 ++++++---- packages/uni-mp-lark/dist/uni.api.esm.js | 18 ++++++---- packages/uni-mp-qq/dist/uni.api.esm.js | 18 ++++++---- packages/uni-mp-toutiao/dist/uni.api.esm.js | 18 ++++++---- packages/uni-mp-weixin/dist/uni.api.esm.js | 18 ++++++---- packages/uni-push/dist/uni-push.es.js | 21 +++++++++++ packages/uni-push/src/index.ts | 2 ++ packages/uni-push/src/route.ts | 35 ++++++++++--------- .../uni-quickapp-webview/dist/uni.api.esm.js | 18 ++++++---- 15 files changed, 174 insertions(+), 83 deletions(-) diff --git a/.gitignore b/.gitignore index 8e27681d2..0040e6239 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ packages/uni-mp-compiler/dist packages/uni-nvue-styler/dist packages/vite-plugin-uni/dist packages/uts/dist +packages/uni-uts-vite/dist .DS_Store node_modules diff --git a/packages/uni-api/src/service/plugin/push.ts b/packages/uni-api/src/service/plugin/push.ts index e93dd36d7..26b385d03 100644 --- a/packages/uni-api/src/service/plugin/push.ts +++ b/packages/uni-api/src/service/plugin/push.ts @@ -54,12 +54,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: OnPushMessageSuccess = { + 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({ @@ -106,6 +112,7 @@ export const getPushClientId = defineAsyncApi( interface OnPushMessageSuccess { type: 'click' | 'receive' data: unknown + stopped?: boolean } type OnPushMessageCallback = (result: OnPushMessageSuccess) => void diff --git a/packages/uni-app-plus/dist/uni.runtime.esm.js b/packages/uni-app-plus/dist/uni.runtime.esm.js index 379b3b142..324ef782a 100644 --- a/packages/uni-app-plus/dist/uni.runtime.esm.js +++ b/packages/uni-app-plus/dist/uni.runtime.esm.js @@ -11096,12 +11096,18 @@ function invokePushCallback(args) { 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) => { diff --git a/packages/uni-h5/dist/uni-h5.es.js b/packages/uni-h5/dist/uni-h5.es.js index 9886c296e..729e529c6 100644 --- a/packages/uni-h5/dist/uni-h5.es.js +++ b/packages/uni-h5/dist/uni-h5.es.js @@ -4625,12 +4625,17 @@ function invokePushCallback(args) { 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({ diff --git a/packages/uni-mp-alipay/dist/uni.api.esm.js b/packages/uni-mp-alipay/dist/uni.api.esm.js index ee92f0579..58e647386 100644 --- a/packages/uni-mp-alipay/dist/uni.api.esm.js +++ b/packages/uni-mp-alipay/dist/uni.api.esm.js @@ -671,12 +671,18 @@ function invokePushCallback(args) { 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) => { diff --git a/packages/uni-mp-baidu/dist/uni.api.esm.js b/packages/uni-mp-baidu/dist/uni.api.esm.js index 3a688b9ca..84a59c3f1 100644 --- a/packages/uni-mp-baidu/dist/uni.api.esm.js +++ b/packages/uni-mp-baidu/dist/uni.api.esm.js @@ -671,12 +671,18 @@ function invokePushCallback(args) { 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) => { diff --git a/packages/uni-mp-kuaishou/dist/uni.api.esm.js b/packages/uni-mp-kuaishou/dist/uni.api.esm.js index d4e7da7c1..d5dd4830b 100644 --- a/packages/uni-mp-kuaishou/dist/uni.api.esm.js +++ b/packages/uni-mp-kuaishou/dist/uni.api.esm.js @@ -671,12 +671,18 @@ function invokePushCallback(args) { 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) => { diff --git a/packages/uni-mp-lark/dist/uni.api.esm.js b/packages/uni-mp-lark/dist/uni.api.esm.js index c67b7d2b5..cc0917f60 100644 --- a/packages/uni-mp-lark/dist/uni.api.esm.js +++ b/packages/uni-mp-lark/dist/uni.api.esm.js @@ -671,12 +671,18 @@ function invokePushCallback(args) { 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) => { diff --git a/packages/uni-mp-qq/dist/uni.api.esm.js b/packages/uni-mp-qq/dist/uni.api.esm.js index ff0b5c098..857259f87 100644 --- a/packages/uni-mp-qq/dist/uni.api.esm.js +++ b/packages/uni-mp-qq/dist/uni.api.esm.js @@ -671,12 +671,18 @@ function invokePushCallback(args) { 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) => { diff --git a/packages/uni-mp-toutiao/dist/uni.api.esm.js b/packages/uni-mp-toutiao/dist/uni.api.esm.js index 3413216bd..ca7fdc96d 100644 --- a/packages/uni-mp-toutiao/dist/uni.api.esm.js +++ b/packages/uni-mp-toutiao/dist/uni.api.esm.js @@ -671,12 +671,18 @@ function invokePushCallback(args) { 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) => { diff --git a/packages/uni-mp-weixin/dist/uni.api.esm.js b/packages/uni-mp-weixin/dist/uni.api.esm.js index df7952914..f5e0071bd 100644 --- a/packages/uni-mp-weixin/dist/uni.api.esm.js +++ b/packages/uni-mp-weixin/dist/uni.api.esm.js @@ -635,12 +635,18 @@ function invokePushCallback(args) { 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) => { diff --git a/packages/uni-push/dist/uni-push.es.js b/packages/uni-push/dist/uni-push.es.js index e0f491cb0..3e8146498 100644 --- a/packages/uni-push/dist/uni-push.es.js +++ b/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/packages/uni-push/src/index.ts b/packages/uni-push/src/index.ts index 0070f22bd..44a1fd584 100644 --- a/packages/uni-push/src/index.ts +++ b/packages/uni-push/src/index.ts @@ -1,4 +1,5 @@ import GtPush from '../lib/gtpush-min' +import { initPushNotification } from './route' // if (process.env.UNI_PUSH_DEBUG) { // GtPush.setDebugMode(true) @@ -20,6 +21,7 @@ if (!appid) { }) }) } else { + initPushNotification() GtPush.init({ appid, onError: (res) => { diff --git a/packages/uni-push/src/route.ts b/packages/uni-push/src/route.ts index f382d2700..57044e76b 100644 --- a/packages/uni-push/src/route.ts +++ b/packages/uni-push/src/route.ts @@ -1,19 +1,20 @@ -export function initPushRoute() { - uni.onPushMessage((res) => { - if (res.data && res.data.path && res.type === 'receive') { - // 仅 App 端 - if (typeof plus !== 'undefined' && plus.push) { - // 创建通知栏,并屏蔽消息的继续传递 - plus.push.createMessage( - res.data.content, - JSON.stringify(res.data.payload), - { - title: res.data.title, - forceNotification: true, - path: res.data.path, - } as any - ) +export 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 as any).stopped = true } - } - }) + }) + } } diff --git a/packages/uni-quickapp-webview/dist/uni.api.esm.js b/packages/uni-quickapp-webview/dist/uni.api.esm.js index accce9ba6..e4856f1b8 100644 --- a/packages/uni-quickapp-webview/dist/uni.api.esm.js +++ b/packages/uni-quickapp-webview/dist/uni.api.esm.js @@ -671,12 +671,18 @@ function invokePushCallback(args) { 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) => { -- GitLab