微信訂閱消息過程詳解
今年年初,微信小程序的模板消息改成了訂閱消息。現在我寫一個流程,方便以后開發的時候照着做
官方文檔:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/subscribe-message.html
訂閱消息和模板消息的區別
簡單用自己的話介紹一下,模板消息是限制在7天內,有次數限制的發送,由用戶完成一個操作后被動的觸發。訂閱消息首先需要用戶進行授權,授權的時候會有彈框提示;用戶每授權一次,就能推送一次。也有不再彈框的選項,但是仍然需要授權這個動作,才可以推送消息,所以訂閱消息也叫一次性訂閱消息。目前也有一次授權一直可以推送的長期消息,但是微信有限制使用的小程序類別,所以普通小程序要想能多次給用戶發送消息,只能引導用戶多次點擊授權。
所以按照官方的意思,有些小程序還是應該把消息推送做到服務號上。
選擇模板
在公眾平台上開通訂閱消息,選擇模板。模板會根據你小程序的類別不同有所不同。

選用一個模板

編排消息的格式,保存即可,會生成一個模板id,等會會用到

獲取下發權限
小程序上需要設置事件,觸發彈框,用戶點擊同意之后才可以消息推送
wx.requestSubscribeMessage({
tmplIds: ['2hHe9FLnV594nDvrCcksg25wgUT_HwwKNYluXfCqHhY'],
// 填入剛剛生成的模板id
success(res){
console.log(res)
},fail(res){
console.log(res)
}
})
觸發事件后會調出一個彈窗,用戶點擊允許后,有一個回調

如果用戶勾選了保持選項,下一次就不會彈框
要注意的是,用戶每授權一次,小程序就有發送訂閱消息的權限一次,假如用戶點擊了三次授權,那么小程序就有權限推三條訂閱消息。
服務端調用接口發送訂閱消息
POST https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN
// 請求示例
{
"touser": "OPENID", // 用戶openid
"template_id": "TEMPLATE_ID", // 模板id
"data": {
//消息內容
"number01": {
"value": "339208499"
},
"date01": {
"value": "2015年01月05日"
},
"site01": {
"value": "TIT創意園"
}
}
}
- 注意在url中拼上access_token,請求體中使用正確的openid
- accesstoken需要用appid,appsecret去auth.getAccessToken換,每兩個小時更新一次。openid要wx.login的code使用code2session去換
- 不同的小程序,同一個用戶的openid不同
data
注意data的內容要對照官方文檔中的填寫

例如我的模板

返回ok就表示發送成功了
