服务通知

app中实现服务通知可以通过消息推送机制实现,而基于微信的通知渠道,小程序想要实现服务通知推送,需要借助模版消息。参考小程序官方API模版消息使用说明, 颜值招聘小程序选用了在微信公众平台手动配置获取模版ID,在后台添加了所需要的个人模版库,如下:

个人模版库

接下来便是收集formId,因为是自定义消息模版,收集的前提有2个:
1、页面需要使用

组件,且设置 report-submit=“true”
2、
组件中需包含button组件,且设置 formType="submit"

换句话说,收集formId是依靠需发模版消息的form表单,将按钮动作响应为表单提交,并从提交动作获取的。所以在项目中,定义好的按钮点击事件出发,按照这个原则构建页面和代码逻辑,将收集到的formId传给服务端保存起来,等待相应事件触发时向对应用户下发服务通知。

举个例子:职位页面报名时收集formId

/*wxml*/
//点击底部报名/结束报名按钮
btnClicked: function (event) {
  console.log("formId:", event.detail.formId) //模拟其打印时:
  this.data.formId = event.detail.formId 
  if (this.data.canClick) {
    this.data.canClick = false
    if (!this.data.isMine) {
      //报名
      this.signUp()
    } else {
      //结束报名
      this.closeJob()
    }
  }
},

//报名
signUp: function () {
  var that = this
  if (app.globalData.userInfo.resume_id == "" || app.globalData.userInfo.resume_id == "0") {
    //没做简历
    this.showNoResumeModel()
    return;
  }
  //调服务器报名接口,上传formId
  common.http(signUpUrl, 'POST', {
    "job_id": that.data.jobInfo.id,
    "formId": that.data.formId
  }, function (res) {
    if (res.data.ok == 1) {
      wx.showToast({
        title: '报名成功'
      })
      that.setData({
        bottomBtnName: '已报名',
        disabled: true,
        'jobInfo.enroll_list': res.data.data.enroll_list
      })
    } else {
      console.log("报名失败:", res.data.msg)
      if (res.data.ok == 140) {
        that.showResumeFailModel()
      } else {
        that.data.canClick = true
        wx.showToast({
          title: res.data.msg,
          icon: 'none'
        })
      }
    }
  }, function (res) {
    that.data.canClick = true
  })
}

注意:模拟器打印时formId: the formId is a mock one,真机上打印如下:


真机打印formId

另外关于通过模版消息管理接口获取模版ID可以参考官网API介绍自行调用。

Tip:

收集formId的2个必要条件要切记,缺一不可,否则无法收集到formId。

你可能感兴趣的:(服务通知)