提交 0de1f3f0 编写于 作者: fxy060608's avatar fxy060608

fix(push): lazy add listener

上级 f7b09e6a
......@@ -134,8 +134,25 @@ interface OnPushMessageSuccess {
type OnPushMessageCallback = (result: OnPushMessageSuccess) => void
const onPushMessageCallbacks: OnPushMessageCallback[] = []
let listening = false
// 不使用 defineOnApi 实现,是因为 defineOnApi 依赖 UniServiceJSBridge ,该对象目前在小程序上未提供,故简单实现
export const onPushMessage: (fn: OnPushMessageCallback) => void = (fn) => {
// 不能程序启动时就监听,因为离线事件,仅触发一次,框架监听后,无法转发给还没开始监听的开发者
if (__PLATFORM__ === 'app' && !listening) {
listening = true
plus.push.addEventListener('click', (result) => {
invokePushCallback({
type: 'click',
message: result,
})
})
plus.push.addEventListener('receive', (result) => {
invokePushCallback({
type: 'pushMsg',
message: result,
})
})
}
if (onPushMessageCallbacks.indexOf(fn) === -1) {
onPushMessageCallbacks.push(fn)
}
......
......@@ -11160,8 +11160,25 @@ const getPushClientId = defineAsyncApi(API_GET_PUSH_CLIENT_ID, (_, { resolve, re
});
});
const onPushMessageCallbacks = [];
let listening = false;
// 不使用 defineOnApi 实现,是因为 defineOnApi 依赖 UniServiceJSBridge ,该对象目前在小程序上未提供,故简单实现
const onPushMessage = (fn) => {
// 不能程序启动时就监听,因为离线事件,仅触发一次,框架监听后,无法转发给还没开始监听的开发者
if (!listening) {
listening = true;
plus.push.addEventListener('click', (result) => {
invokePushCallback({
type: 'click',
message: result,
});
});
plus.push.addEventListener('receive', (result) => {
invokePushCallback({
type: 'pushMsg',
message: result,
});
});
}
if (onPushMessageCallbacks.indexOf(fn) === -1) {
onPushMessageCallbacks.push(fn);
}
......
......@@ -133,13 +133,6 @@ function initPushNotification() {
},
});
});
plus.push.addEventListener('click', (result) => {
// @ts-expect-error
uni.invokePushCallback({
type: 'click',
message: result,
});
});
uni.onPushMessage((res) => {
if (res.type === 'receive' &&
res.data &&
......
......@@ -31,13 +31,6 @@ function initPushNotification() {
},
});
});
plus.push.addEventListener('click', (result) => {
// @ts-expect-error
uni.invokePushCallback({
type: 'click',
message: result,
});
});
uni.onPushMessage((res) => {
if (res.type === 'receive' &&
res.data &&
......@@ -58,11 +51,4 @@ uni.invokePushCallback({
Promise.resolve().then(() => {
initPushNotification();
plus.push.setAutoNotification && plus.push.setAutoNotification(false);
plus.push.addEventListener('receive', (result) => {
// @ts-expect-error
uni.invokePushCallback({
type: 'pushMsg',
message: result,
});
});
});
......@@ -8,11 +8,4 @@ uni.invokePushCallback({
Promise.resolve().then(() => {
initPushNotification()
plus.push.setAutoNotification && plus.push.setAutoNotification(false)
plus.push.addEventListener('receive', (result) => {
// @ts-expect-error
uni.invokePushCallback({
type: 'pushMsg',
message: result,
})
})
})
......@@ -35,13 +35,6 @@ export function initPushNotification() {
})
}
)
plus.push.addEventListener('click', (result) => {
// @ts-expect-error
uni.invokePushCallback({
type: 'click',
message: result,
})
})
uni.onPushMessage((res) => {
if (
res.type === 'receive' &&
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册