原文:https://blog.csdn.net/qq_28581175/article/details/124720749
前言
微信小程序推送消息給指定用戶
一、推送消息:小程序“訂閱消息”功能
1.原“模板消息”已經被棄用,所以需要使用微信小程序官方提供的最新消息推送接口
2.爲什麼不能使用“客服消息”接口:客服消息,顧名思義,就是你以客服的身份給你的用戶解答問題唄,如果你的用戶長時間沒有說過話了,其實就相當於離線了,你的消息發過去也沒有什麼意義,所以微信會給出了45015這麼個錯誤。所以,解決這個問題的方向就是,換個推送消息接口。
3.【推薦】使用小程序“訂閱消息”功能,達到推送消息的目的,並以“服務通知”的形式接收消息
二、開發步驟
微信小程序官方參考地址:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/subscribe-message.html#訂閱消息語音提醒
1.小程序調用wx.requestSubscribeMessage,進行消息訂閱用戶授權
微信小程序官方參考地址:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/subscribe-message/wx.requestSubscribeMessage.html
訂閱消息模板配置:https://mp.weixin.qq.com/wxamp/newtmpl/mytmpl?start=0&limit=10&token=1241600784&lang=zh_CN
代碼如下(示例):
wx.requestSubscribeMessage({
tmplIds: ['訂閱消息模板ID'],
success (res) {
console.log(res);
}
})
123456
2.小程序調用wx.login,獲取code
代碼如下(示例):
// 登錄
wx.login({
success: res => {
// 發送 res.code 到後端換取 openId, sessionKey, unionId
// 後端訪問請求獲取用戶openId
console.log(res.code);
},
fail: res => {
// 登錄失敗
console.log("登錄失敗!");
}
})
123456789101112
用戶openid:同一用戶,訪問不同的小程序,得到的openid都是不一樣的,即openid與小程序有關
用戶unionId:同一用戶,對同一個微信開放平臺下的不同應用(同一個微信開放平臺帳號下的移動應用、網站應用和公衆帳號(包括小程序)),UnionID是相同的。可通過 UnionID 來區分用戶的唯一性。官方參考地址:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html
在進行用戶信息校驗時,【推薦】使用unionId作爲用戶唯一標識
3.後端訪問請求,獲取用戶openId
微信小程序官方參考地址:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/login/auth.code2Session.html
使用Postman模擬訪問請求(示例):
4.後端訪問請求,獲取小程序全局唯一後臺接口調用憑據access_token
微信小程序官方參考地址:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/access-token/auth.getAccessToken.html
使用Postman模擬訪問請求(示例):
5.後端訪問請求,推送訂閱消息
使用Postman模擬訪問請求(示例):
訂閱消息模板:
6.推送訂閱消息結束,用戶成功接收消息
總結
-
微信小程序推薦使用“訂閱消息”功能,推送消息
-
前期準備:
微信小程序管理平臺
- 開通小程序“訂閱消息”功能
- 配置訂閱消息“模板”
- 訂閱消息模板分爲“一次性訂閱”和“長期訂閱”兩種模板。
- 一次性訂閱模板只能授權一次發送一次。
- 長期訂閱模板可以授權一次,一直髮送,沒有次數限制。
- 長期訂閱模板和小程序配置的類目有關,有的類目下沒有長期訂閱模板。目前長期性訂閱消息僅向政務民生、醫療、交通、金融、教育等線下公共服務開放。
- 如果沒有找到符合需求的訂閱模板,可以自定義創建新的訂閱模板
-
開發步驟:
- 用戶授權“訂閱消息”
- 調用wx.login,獲取code
- 獲取用戶openid
- 獲取小程序全局唯一後臺接口調用憑據access_token
- 推送訂閱消息