From 40f3a8cfa898b11b137fa9f445f3426ad1e01758 Mon Sep 17 00:00:00 2001 From: Blizzard Date: Mon, 9 Mar 2026 09:12:33 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E8=AE=A2=E9=98=85?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/tasks/index.js | 11 +++++++- utils/subscribe.js | 66 +++++++++++++++++++++++++++++++++----------- 2 files changed, 60 insertions(+), 17 deletions(-) diff --git a/pages/tasks/index.js b/pages/tasks/index.js index f5e3232..049688f 100644 --- a/pages/tasks/index.js +++ b/pages/tasks/index.js @@ -242,7 +242,16 @@ Page({ // Attempt to subscribe (silent mode avoids error popups if disabled) // This encourages "Always Allow" behavior for seamless experience - requestSubscription(undefined, true).then(() => { + requestSubscription(undefined, true).then((subResult) => { + // Debug failure feedback + if (!subResult.success) { + if (subResult.isMainSwitchOff) { + wx.showToast({ title: '提醒总开关已关闭', icon: 'none' }); + } else { + console.log('[Task] Subscription quota not increased:', subResult.res || subResult.error); + } + } + wx.showLoading({ title: '提交中...', mask: true }); request.post('/plant/completeTask', { diff --git a/utils/subscribe.js b/utils/subscribe.js index a2e2c5a..9562d2d 100644 --- a/utils/subscribe.js +++ b/utils/subscribe.js @@ -3,39 +3,73 @@ * Template ID: iG5GYMPQAgKxIE9zZNOgKS6tCURhM9p9AC8iZ3Uj3uA */ const DEFAULT_TEMPLATE_ID = 'iG5GYMPQAgKxIE9zZNOgKS6tCURhM9p9AC8iZ3Uj3uA'; +const MIN_SUB_INTERVAL = 5000; // Minimum 5 seconds between real requests +let lastSubTime = 0; export const requestSubscription = (tmplIds = [DEFAULT_TEMPLATE_ID], silent = false) => { return new Promise((resolve) => { + const now = Date.now(); + + // Throttling for silent requests to avoid "frequent request" errors + if (silent && (now - lastSubTime < MIN_SUB_INTERVAL)) { + console.log('[Subscribe] Throttled: Skipping real request to avoid frequency errors'); + resolve({ success: true, throttled: true }); + return; + } + if (!wx.requestSubscribeMessage) { - if (!silent) console.warn('Current version does not support subscribe message'); + if (!silent) console.warn('当前版本不支持订阅消息'); resolve({ success: false, errMsg: 'Not supported' }); return; } + // Update lastSubTime before the call + lastSubTime = now; + wx.requestSubscribeMessage({ tmplIds: tmplIds, success(res) { - // If any of the requested IDs are accepted - const isAccepted = tmplIds.some(id => res[id] === 'accept'); - resolve({ success: isAccepted, res }); + // Log detailed results for debugging + console.log('[Subscribe] Result:', res); + + // Check if any requested IDs were accepted + const acceptedIds = tmplIds.filter(id => res[id] === 'accept'); + const isAccepted = acceptedIds.length > 0; + + // Identify if user has opted for "Always Reject" + const rejectedIds = tmplIds.filter(id => res[id] === 'reject'); + + if (rejectedIds.length > 0 && !silent) { + console.warn('[Subscribe] User rejected templates (possibly "Always Reject"):', rejectedIds); + } + + resolve({ + success: isAccepted, + res, + isAlwaysRejected: rejectedIds.length === tmplIds.length + }); }, fail(err) { - if (!silent) console.error('Subscription failed', err); + console.error('[Subscribe] Request Failed:', err); // 20004: User closed main switch in settings - if (err.errCode === 20004 && !silent) { - wx.showModal({ - title: '提示', - content: '请在设置中开启订阅消息通知', - confirmText: '去开启', - success: (modalRes) => { - if (modalRes.confirm) { - wx.openSetting(); + if (err.errCode === 20004) { + if (!silent) { + wx.showModal({ + title: '提示', + content: '订阅通知主开关已关闭,请在设置中开启', + confirmText: '去开启', + success: (modalRes) => { + if (modalRes.confirm) { + wx.openSetting(); + } } - } - }); + }); + } else { + console.warn('[Subscribe] Main subscription switch is OFF'); + } } - resolve({ success: false, error: err }); + resolve({ success: false, error: err, isMainSwitchOff: err.errCode === 20004 }); } }); });