瑶都万能墙
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

67 lines
2.4 KiB

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