这篇文讲什么?

讲"微信小程序"中"服务通知"如何实现

服务通知是什么?

是微信小程序中直接推送信息给用户的方法。如下图所示:
----2
----1

这篇文对谁有用?有什么用?

对谁有用?:微信小程序开发者
有什么用?:学怎么实现服务通知

实现

需要小程序 + 服务器后端搭配实现
代码加起来也没几行,非常简单。

概念:你需要2个东西,

一个叫 form_id,这个只能通过用户点击小程序中的按钮获得。
微信是为了不让你乱发消息给用户。form_id 的有效期是7天。

一个叫 template_id,这个是模板的 id。
就像发短信一样,如果你做过发短信就知道短信是有模板的。不是你可以瞎发,想写什么就写什么。
模板 id 去小程序的后台(和公众号是同一个后台)找就行了。

form_id 长什么样子?

form_id

template_id 长什么样子?

GAtwY40SsqJC-so16hU4FS3yICRvVkqks4In_OLUbvQ
3
另外注意,开发者工具中拿不到真正的 form id,只能拿到一个"假的"

流程

  1. 小程序中获得 form_id
  2. https 把 form_id 发给后端
  3. 后端使用 form_id + 特定用户的 open_id (因为你要指定这个消息要发给谁) + template_id 表明你要使用哪个模板 + data 代表模板中的文字消息
    然后后端 https 把以上数据发给微信文档中所说的接口

最简单的 demo 如下

  1. 在页面上放一个 form
    <form bindsubmit="submit" report-submit='true'>
        <button form-type="submit" type="default" size="mini">提交</button>
    </form>
  1. 处理 form 的 submit
    submit: function(e) {
        var form_id = e.detail.formId;
        console.log(form_id);
        this.setData({
            formID: form_id
        });
        // 这就拿到 form_id
    }

就这么点代码,因为博客里代码高亮实在太丑。
我放到了 Github: https://github.com/1c7/miniapp_notice_demo

其他

我在网上搜了一圈,目前业界做法是在小程序里埋点提前收集一些 form_id,
等需要的时候再用这些 form_id。

最后

贴一个官方文档地址:
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/template-message.html

全文完

感谢阅读