/** * 微信小程序订阅消息工具 * 用于统一管理订阅消息通知功能 */ /** * 订阅模板消息 * @param {Array} templateIds - 模板ID数组,如果不传则使用默认模板 * @returns {Promise} 返回订阅结果 */ export function subscribeMessage(templateIds = null) { return new Promise((resolve, reject) => { // 默认的模板ID列表 const defaultTemplateIds = [ 'uXZnHWrjtcX9JHlnMpdlWmzgJp71sKxCRiMn3TrE-EE', 'gTzGpOfJcYxtbvPG9OHnhbureKz5XLG8NPyECUGb2lw', ]; // 使用传入的模板ID或默认模板ID const tmplIds = templateIds || defaultTemplateIds; wx.requestSubscribeMessage({ tmplIds: tmplIds, // 需要订阅的模板ID列表 success(res) { resolve(res); console.log('订阅消息调用成功', res); // 遍历处理每个模板ID的订阅结果 tmplIds.forEach(tmplId => { if (res[tmplId] === 'accept') { console.log(`用户同意订阅模板ID:${tmplId}`); // 这里可以添加用户同意后的逻辑,比如发送消息等(注意:发送消息需要在后端进行) } else if (res[tmplId] === 'reject') { console.log(`用户拒绝订阅模板ID:${tmplId}`); } else { console.log(`用户对该模板ID的订阅请求:${res[tmplId]}`); // 'ban' 表示用户被禁止订阅该模板 } }); }, fail(err) { resolve(err); // 即使失败也resolve,避免阻塞业务流程 console.error('订阅消息调用失败', err); } }); }); } /** * 在发布内容前调用订阅消息 * 这是一个便捷方法,用于在发布内容前统一处理订阅逻辑 * @param {Array} templateIds - 可选的模板ID数组 * @returns {Promise} 返回订阅结果 */ export async function subscribeBeforePublish(templateIds = null) { try { const result = await subscribeMessage(templateIds); return result; } catch (error) { console.error('订阅消息失败:', error); return null; } } export default { subscribeMessage, subscribeBeforePublish };