两个云函数一个页面
注:详细内容中的参数很重要,一会要在云函数里用
app.js
// app.js
App({
onLaunch() {
wx.cloud.init({
//环境id
env:"XXXXXXXXXXXXXXXXXXXXXX" //自己的云环境id
})
},
globalData: {
userInfo: null
}
})
index.wxml
<button bindtap="getOpenid">1.获取用户openidbutton>
<button bindtap="shouquan">2.获取用户授权button>
<input placeholder="输入时间" bindinput="getTime">input>
<button bindtap="sendOne">3.发送消息给单个用户button>
index.js
// index.js
//在page外面定义一个变量存储用户在输入框输入的时间(用于动态赋值时间参数)
let time=''
Page({
//获取用户openid
getOpenid(){
//调用云函数
wx.cloud.callFunction({
//云函数的名字
name:"getopenid"
}).then(res=>{
console.log("获取openid成功",res)
}).catch(res=>{
console.log("获取openid失败",res)
})
},
//获取用户授权
shouquan(){
wx.requestSubscribeMessage({
//模板id,可以有多个模板参数(数组形式)
tmplIds: ['XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'], //自己的模板id
success(res){
console.log('授权成功',res)
},
fail(res){
console.log('授权失败',res)
}
})
},
//使用input标签对模板参数动态赋值,这里以time参数为例
//获取用户输入的时间
getTime(event){
//赋值给上面定义的变量
time=event.detail.value
//获取到在input里面输入的内容
console.log(time)
},
//发送消息给单个用户
sendOne(){
//如果input里面输入为空,给出提示
if(time==null||time==''){
wx.showToast({
icon:"none",
title: '请输入时间',
})
//为空的话退出函数
return
}
//调用编辑好的sendMsg1云函数
wx.cloud.callFunction({
//云函数的名字
name:"sendMsg1",
//传入openid
data:{
//把第一步获取到的openid粘过来
openid:"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", //获取到的openid
startTime:time
}
}).then(res=>{
console.log("发送单条消息成功",res)
}).catch(res=>{
console.log("发送单条消息失败",res)
})
}
})
云函数getopenid——index.js
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
return {
event,
openid: wxContext.OPENID,
appid: wxContext.APPID,
unionid: wxContext.UNIONID,
}
}
云函数sendMsg1——index.js
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境
// 云函数入口函数
exports.main = async (event, context) => {
try{
//发送订阅消息给用户
const result = await cloud.openapi.subscribeMessage.send({
touser:event.openid,
//要跳转到哪个页面
page:"pages/index/index",
data:{ //配置模板里的参数
phrase1:{
value:'不通过'
},
thing2:{
value:'胡乱拆迁'
},
date3:{ //设置动态模板参数的赋值
value:event.startTime
},
thing5:{
value:'不符合当地法规'
}
},
//模板id
templateId:'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' //写入自己的模板id
})
console.log(result.errCode)
return result.errCode //注意:必须返回result.errCode!!!否则虽然发送了但控制台会报错
}catch(err){
console.log(err)
return err
}
}
注意:对云函数编辑完一定要记得上传并部署!!!(每次都是)
选择总是保持以上选择,不在询问的话,那么每次点击授权按钮的时候就会自动授权成功,不用再弹出授权选择的弹窗了。