diff --git a/pages/add-anniversary/add-anniversary.js b/pages/add-anniversary/add-anniversary.js index ba8ce05..4a8a01d 100644 --- a/pages/add-anniversary/add-anniversary.js +++ b/pages/add-anniversary/add-anniversary.js @@ -301,11 +301,13 @@ Page({ } // 如果开启了提醒,请求订阅消息授权 + // 注:requestSubscribe 委托给 utils/subscribe.js 的 requestAndReport, + // 该函数只会 resolve(true=同意/false=拒绝),不会 reject; + // 无论用户是否同意,都不阻塞后续保存流程 if (formData.remindEnabled) { - try { - await this.requestSubscribe() - } catch (err) { - console.log('用户拒绝订阅消息') + const accepted = await this.requestSubscribe() + if (!accepted) { + console.log('用户未同意订阅消息,本次不上报额度') } } @@ -370,21 +372,15 @@ Page({ /** * 请求订阅消息授权 + * 委托给 utils/subscribe.js 的 requestAndReport:同意后会自动把新增额度 + * 上报给后端(走同步队列,失败自动入队)。 + * 注意:本方法不能加 async,且内部不能在调用 requestAndReport 之前插入 + * 任何 await —— wx.requestSubscribeMessage 必须由用户点击手势同步触发, + * 一旦中间出现异步跳跃,手势上下文丢失会导致调用必然失败。 + * @returns {Promise} 用户是否同意 */ requestSubscribe() { - return new Promise((resolve, reject) => { - wx.requestSubscribeMessage({ - tmplIds: [subscribe.TEMPLATE_ID], - success: (res) => { - console.log('订阅消息授权结果:', res) - resolve(res) - }, - fail: (err) => { - console.error('订阅消息授权失败:', err) - reject(err) - } - }) - }) + return subscribe.requestAndReport() }, /**