| @ -0,0 +1,67 @@ | |||
| /** | |||
| * 微信小程序订阅消息工具 | |||
| * 用于统一管理订阅消息通知功能 | |||
| */ | |||
| /** | |||
| * 订阅模板消息 | |||
| * @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 | |||
| }; | |||