昨天聊到一个问题,就是只有收到的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!!!!!!!!!!

可以成功的发消息之后,接下来就要研究怎么定时发送的问题了。

**,一天就写这么一点点,什么时候才能写完我的小程序