uni-app小程序消息推送

4,337 阅读1分钟

留下用户不易,且行且珍惜

小程序推送用户消息,可以模板创建一个form表单(最好用系统自带的button)

<form @submit="handlePush" report-submit='true'>
  <button formType="submit">推送消息</button>
</form>

   小程序的formId需要尽可能的在用户交互比较频繁的操作点上面加好埋点,所以就会在页面的多个地方加form。之前看网上的做法上有一种是在一个button上循环嵌套n个form表格,当用户点击一次之后就可以一次性拿到这n个formId值。实际上这种做法目前好像并不凑效,应该被微信和谐了,你会发现嵌套再多层最终拿到的formId值都是一样的,所以嵌套form的作用就不大了。

   另外,在小程序的主入口页,因为这里是uni-app开发,app.vue为主入口,要拿取formId值的话首先肯定会想到在这里拿formId,这样就一劳永逸了。通常做法就是隐藏一个form表单,然后在生命周期里trigger表单提交事件。但实际是微信不支持更不建议dom操作...

   综上,还是老老实实的多加几个点吧。当然,偷懒还是要偷的,加个minxins吧。

/** form-id-mixins.js **/
export default {
  methods: {
    getFormIdData(formId, type = 1) {
        // 加type参数是为了有效区分都为同一类型的formId
        const params = {
          formId,
          type
        }
        // 传值给后台的API
        Api.getFormId(params)
          .then(res => {
            console.log('success')
          })
    },
  }
}

引用就简单了...

import mixin from '@/form-id-mixins.js'
export default {
  mixins: [mixin],
  methods: {
    handlePush(e) {
      this.getFormIdData(e.detail.formId)
    } 
  }
}