微信小程序备忘录开发第二天
昨天聊到一个问题,就是只有收到的event只有tap。后来我回去研究了一下,发现button里的bindtap不是指统筹的点击事件,而是bind了tap这个点击事件,然后我试了试,将bindtap改成了bindtouchend。于是就成功的接受到了touchend这个点击事件。
这就好办了。不用管用户怎么点击,只接受tap这个点击事件就可以完成功能了。
接下来就该写订阅了
wx.requestSubscribeMessage({
tmplIds: ['f244MSuURT-Y8wdy8vxH8Kz2aZsBPVJp5a-SiSzyC5s'],
success (res) {
if(res.TEMPLATE_ID=='accept'){
console.log("订阅成功")
wx.showToast({
title: '订阅成功!',
duration: 1500,
icon: 'success',
mask: true,
success: (res) => {},
fail: (res) => {},
complete: (res) => {},
})
}
}, fail: (res) => {
console.log("订阅接口调用失败")
console.log(res)
}
})兴冲冲的点了编译,结果……
那好吧,放到真机上试一下。
· 点击自动真机调试。
然后一通操作下来……
这样似乎就可以给用户发送消息了。
那就再来写一个按钮进行调用吧
这里按照云调用进行订阅消息推送。
· 配置API权限。
按照教程看了一下。然而找到这个文件之后发现
已经帮我们配置好了,初步估计应该是开发者工具帮我们弄好了这些东西。
于是贴上官方教程里的代码段。
const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async (event, context) => {
try {
const result = await cloud.openapi.subscribeMessage.send({
touser: 'OPENID',
page: 'index',
lang: 'zh_CN',
data: {
number01: {
value: '339208499'
},
date01: {
value: '2015年01月05日'
},
site01: {
value: 'TIT创意园'
},
site02: {
value: '广州市新港中路397号'
}
},
templateId: 'TEMPLATE_ID',
miniprogramState: 'developer'
})
return result
} catch (err) {
return err
}
}第一个问题:touser是要发送给用户的openID。那么这个用户openID咋获得呢?
首页有一个点击获取openid的东西。点一下就会发现调用失败。
根据提示照做之后再次进行真机调试。
后来发现。解决方法其实很简单,只是因为我当时选了所有文件。而实际上应该选择这个
这样就成功拿到用户的openid了。
观察onGetOpenid()源码
用户的openid最终应该是存入了全局变量中。
开发中遇到的第二个问题:
快速开始中的云函数调用这一块。按照教程配制好之后始终不能正确的发送消息。问题如图
大意是:data.time2.value invalid 时间值的格式错了。但无论我怎么改都没有效果,即便我将官方文档中的格式复制上去也无济于事,我便开始意识到问题可能并不在这里。后来我才想起来。
云函数修改之后是需要上传的,而我只是简单的对小程序进行了编译,并没有将代码上传到服务器,所以才导致了这个问题。
同上,上传并部署之后,问题就成功解决了。OHHHHHHHHHHHHHHHHHHHH!!!!!!!!!!
可以成功的发消息之后,接下来就要研究怎么定时发送的问题了。
**,一天就写这么一点点,什么时候才能写完我的小程序
