溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在微信小程序中發送訂閱消息

發布時間:2022-04-20 14:15:10 來源:億速云 閱讀:232 作者:iii 欄目:大數據
# 如何在微信小程序中發送訂閱消息

## 前言

微信小程序訂閱消息是開發者實現服務通知能力的重要途徑。與模板消息相比,訂閱消息更注重用戶主動授權,符合微信"用戶主導"的產品理念。本文將詳細介紹從申請模板到最終發送的全流程,包含代碼示例和常見問題解決方案。

---

## 一、訂閱消息基礎概念

### 1.1 什么是訂閱消息
訂閱消息允許開發者在用戶**主動授權**后,在7天內向用戶發送1-3條服務通知。主要特點包括:
- 需要用戶明確授權(不再像模板消息默認勾選)
- 每條消息獨立授權
- 長期訂閱需特殊資質(僅限政務、醫療等領域)

### 1.2 與模板消息的區別
| 特性        | 訂閱消息         | 模板消息(已下線) |
|------------|----------------|----------------|
| 授權方式    | 每次發送前需授權 | 一次授權長期有效 |
| 有效期      | 7天             | 無限制         |
| 發送限制    | 1-3條/次授權    | 無明確限制     |

---

## 二、完整實現流程

### 2.1 準備工作
1. **開通能力**:登錄[微信公眾平臺](https://mp.weixin.qq.com/) → 開發 → 開發設置 → 消息推送
2. **申請模板**:在「功能」→「訂閱消息」中添加模板,記錄模板ID

### 2.2 前端授權實現

```javascript
// 獲取訂閱授權
async function requestSubscribe() {
  const tmplIds = ['TEMPLATE_ID']; // 替換為實際模板ID
  try {
    const res = await wx.requestSubscribeMessage({
      tmplIds: tmplIds,
      success(res) {
        if (res[tmplIds[0]] === 'accept') {
          console.log('用戶已授權');
        }
      }
    });
  } catch (err) {
    console.error('授權失敗:', err);
  }
}

關鍵參數說明: - tmplIds:需要申請的模板ID數組 - 用戶授權結果會以{模板ID: 'accept'/'reject'}的形式返回

2.3 服務端發送實現(Node.js示例)

const cloud = require('wx-server-sdk');
cloud.init();

exports.main = async (event, context) => {
  try {
    const result = await cloud.openapi.subscribeMessage.send({
      touser: event.openid, // 用戶openid
      templateId: 'TEMPLATE_ID', // 模板ID
      page: 'pages/index/index', // 點擊消息跳轉頁面
      data: {  // 模板內容
        thing1: { value: '訂單提醒' },
        time2: { value: '2023-07-20 14:00' }
      }
    });
    return result;
  } catch (err) {
    return err;
  }
};

參數規范: - data字段需與模板內容嚴格匹配 - 字段類型需符合微信要求(如time類型必須為yyyy-MM-dd HH:mm


三、高級技巧與優化

3.1 多場景授權策略

場景:下單時申請發貨通知模板,支付完成時申請評價模板

// 根據場景動態申請不同模板
function sceneSubscribe(scene) {
  const templates = {
    order: ['SHIPPING_TMPL_ID'],
    payment: ['REVIEW_TMPL_ID', 'COUPON_TMPL_ID']
  };
  wx.requestSubscribeMessage({
    tmplIds: templates[scene] || []
  });
}

3.2 本地緩存優化

// 檢查本地是否已有授權
function checkSubscribeCache(tmplId) {
  const cache = wx.getStorageSync('subscribeCache') || {};
  if (cache[tmplId] > Date.now()) {
    return true; // 7天內有效
  }
  return false;
}

3.3 服務端批量發送

// 使用云開發批量發送
const batchUsers = ['openid1', 'openid2'];
const sendTasks = batchUsers.map(openid => {
  return cloud.openapi.subscribeMessage.send({
    touser: openid,
    templateId: 'TEMPLATE_ID',
    data: {...}
  });
});

Promise.all(sendTasks).then(results => {
  console.log('批量發送完成', results);
});

四、常見問題解決方案

4.1 授權被拒絕處理方案

  1. 引導文案優化
    
    wx.showModal({
     title: '開啟通知',
     content: '開啟后您將及時接收訂單狀態提醒',
     success(res) {
       if (res.confirm) requestSubscribe();
     }
    });
    
  2. 在設置頁增加常駐入口

4.2 錯誤代碼處理

錯誤碼 含義 解決方案
43101 用戶拒絕授權 優化引導文案
47003 模板參數錯誤 檢查data字段與模板匹配度
41030 頁面路徑不存在 檢查page字段是否已發布

4.3 性能優化建議

  1. 合并請求:將多個模板ID放在一次requestSubscribeMessage調用中
  2. 延遲加載:在用戶完成核心操作后再申請授權
  3. 數據壓縮:對data字段值進行精簡(如用縮寫代替長文本)

五、最佳實踐案例

5.1 電商場景實現

流程: 1. 下單時申請「發貨通知」模板 2. 發貨后觸發消息:

   {
     "character_string1": { "value": "SF123456" },
     "thing2": { "value": "商品名稱" },
     "date3": { "value": "2023-07-21" }
   }

5.2 內容類小程序

策略: - 用戶收藏內容時申請「更新通知」 - 采用「一次性訂閱」+「長期訂閱」組合


結語

正確實現訂閱消息需要開發者同時關注技術實現和用戶體驗。建議: 1. 嚴格遵循微信官方規范 2. 設計清晰的授權引導流程 3. 建立消息發送日志系統 4. 定期分析用戶授權率數據

通過本文介紹的方法,開發者可以構建高效、合規的消息通知體系,提升小程序用戶活躍度。

附錄: - 微信官方文檔 - 消息模板審核規范 “`

注:實際使用時請將代碼中的TEMPLATE_ID等占位符替換為實際值,微信接口可能有更新,建議以最新官方文檔為準。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女