昨天聊到一个问题,就是只有收到的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!!!!!!!!!!
可以成功的发消息之后,接下来就要研究怎么定时发送的问题了。
**,一天就写这么一点点,什么时候才能写完我的小程序