uniCloud云开发--订阅消息
uniCloud云开发–实现微信小程序订阅消息
微信token定时获取
思路
-先新建云函数getWxToken,通过触发器定时 每2小时获取token 。因为微信小程序服务端api 基本都要token认证,有效期只有2小时
-其次定时获取后存数据库中,方便其他地方统一调用。而不会出现相互调用出现token失效问题
代码截图
新建云函数
触发器设置
登录unicloud 后台管理界面,找到云函数点击详情设置
注意要对应的 appid appsecret 。其他这里没什么好说的, 弄过原生微信小程序云开发的应该很好上手。 没弄过的 看文档,我这就贴出代码, 照着写即可。
发送订阅消息
创建云函数sendTempMessage 。先数据库获取token,在去调用微信的发送api ,代码如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 ;
const db = uniCloud.database()
exports.main = async (event, context) => {
//event为客户端上传的参数
console.log('event : ', event)
let select_data = await db.collection('token').where({
name:'wx_token',
}).get();
console.log(select_data.data[0].token);
const token = select_data.data[0].token;
const openid = 'xx'; // 小程序里用户的openid
const date = event.date;
const startLocation = event.startLocation;
const time = event.time;
const desc = event.desc;
const endLocation = event.endLocation;
const url = `https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=${token}`;
console.log(url)
const res = await uniCloud.httpclient.request(url,{
method:"POST",
contentType: 'json',
dataType:"json",
data:{
touser: openid,
page: 'index',
lang: 'zh_CN',
data: {
date14: {
value: date
},
time9: {
value: time
},
thing17:{
value:startLocation
},
thing18:{
value:endLocation
},
thing21:{
value:desc
}
},
template_id:'xxx', //自己申请的模板id
miniprogramState:'developer'
}
})
return res;
};
vue页面里有个按钮@click=’sendMessage’,点击先获取订阅权限。 准许后在调用云函数
1 | sendMessage() { |
###发送成功界面
之前用的是微信小程序原生的云开, 这次记录一下 用uniapp 的unicloud来实现云开发的过程。简单说一下 使用感受吧。
-uniapp 基于vue 2.0 来进行跨端,利用vue的优势,编写代码比原生快。
-uniapp unicloud 集成了很多功能。例如短信验证使用方便,还是跨端的云开发。
-原生微信小程序云开发,云函数调用更加的方便,可以免token校验。包括openId的获取 都是一行代码搞定,就不一会出现下面的问题
-细心的人可能看到我在使用unicloud 开发的时候。由于没有缓存的原因,只能存在数据库里,需要 对token 频繁的读写。那在用户多的时候,可能增加了云数据库的读取限制。从而增加云开发成本。
原文作者: 小左
原文链接: https://zuobb.cn/2020/12/22/uniCloud云开发-订阅消息/
版权声明: 转载请注明出处(必须保留作者署名及链接)