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