近期做的公众号推送有同学不满足于不能出现在消息列表,于是我做了个升级版 大家可以看一下效果图
是不是很不错
服务器的话这边用到的是腾讯云的2核2g4M的服务器
文章同款服务器2核2g4Mhttps://cloud.tencent.com/act/cps/redirect?redirect=2446&cps_key=f0552e9eadafced33d3c20de84094b4b&from=console
我们来简单的描述一下这次复杂的操作
首先注册小程序会吧
微信公众平台 -在这个微信公众平台注册
然后下载开发者工具会吧 创建小程序会吧 简单做一个小界面会吧
如果你的小程序仅仅做这个推送功能那就只需要这样
我们只需要两个功能
一获取openid
getOpenid(){
wx.cloud.callFunction({
name: "getOpenid",
complete: res => {
console.log(res.result.openid)
this.setData({
openId: res.result.openid
})
}
})
}
二申请推送
getPush(){
wx.requestSubscribeMessage({
tmplIds: ["模板id"],
success: res =>{
console.log(res)
}
})
},
这边我们注重讲解一下推送功能
这个点一次就代表你的小程序可以推送一次消息给这个用户
所以你可以让这位用户点他个一百次
然后回到我们的小程序后台前往-功能-订阅消息
选择一个模板就好啦
然后本次源码依旧是python
服务器的话这边用到的是腾讯云的2核2g4M的服务器
文章同款服务器2核2g4Mhttps://cloud.tencent.com/act/cps/redirect?redirect=2446&cps_key=f0552e9eadafced33d3c20de84094b4b&from=console
本次就给出核心源码 由于较麻烦具体想搭建的可以私聊博主
主要就是一个获取accessToken
def getAccessToken():
global acctoken
appid = ""
secret =""
aturl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={}&secret={}".format(appid, secret)
str = post(aturl).text
# print(str)
acctoken = str.split(',')[0].split(':')[1].split('"')[1]
# other method
# response_json = eval(str)
# acctoken = response_json["access_token"]
# print(acctoken)
然后请求发送就这么简单
def send():
data = {
# 接收用户的openid
# "touser": "",
# 测试的时候用我自己的
"touser": "",
"template_id": "", # 模板id
"page": "pages/index/index",
"miniprogram_state": "trial",
"lang": "zh_CN",
"data": {
"thing1": {
"value": "早安xx宝宝"
},
"thing21": {
"value": "想念在{}的xx已经{}天了".format(city,go_days)
},
"time4": {
"value": "{}".format(date.today())
},
"thing7": {
"value": "天气:{}\n最高温:{}\n最低温:{}".format(weather,max_temperature,min_temperature)
},
"thing26": {
"value": "在一起了{}天\n离宝宝生日还有{}天".format(love_days,birth_day)
}
}
}
access_token = acctoken
print(access_token)
# 设置请求头
header = {'Content-Type': 'application/json'}
# 请求地址
url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + access_token
# 请求体
response = post(url, headers=header, data=json.dumps(data))
# 打印请求结果
print(response.text)
好啦我觉得这样的推送算是一个比较好的方案,既简单不需要申请服务号,又可以出现在消息列表,还有即时通知 算是个很棒的方案了,大家快去时间吧!