微信小程序模板消息实践:封装获取formId模块

0 下载量 147 浏览量 更新于2024-08-30 收藏 185KB PDF 举报
"微信小程序模板消息的获取与发送,基于Taro框架的formId功能模块封装实践" 在微信小程序开发中,模板消息是一项重要的功能,它允许开发者在用户完成特定交互后发送通知,以保持服务的连贯性并提供更好的用户体验。然而,微信对模板消息的使用设定了一些规则,如消息只能在服务通知中显示,且必须基于用户在页面内的交互行为触发,点击后只能跳转到同一小程序内的页面。因此,要发送模板消息,开发者需要在用户支付或提交表单时获取到prepay_id或formId。 formId是用户在提交表单时生成的唯一标识,它在7天内有效,可用于发送模板消息。但若用户在7天内未完成特定操作,开发者就无法获取formId,这可能会影响到业务中的通知需求。prepay_id仅在支付时产生,获取方式相对明确。本实践主要关注如何在小程序中高效地获取formId。 获取formId的关键在于使用带`report-submit`属性的`<form>`组件和`form-type="submit"`属性的`<button>`组件。小程序原生代码示例如下: ```html <form report-submit="true" bindSubmit="submitEvent"> <button open-type="submit">提交</button> </form> ``` 在上述代码中,当用户点击“提交”按钮时,会触发`submitEvent`事件,从而获取formId。为了封装这一功能模块,可以创建一个通用的方法,监听所有满足条件的表单提交事件。通过监听`bindSubmit`,并在事件处理函数中获取并保存formId。此外,可以通过CSS隐藏提交按钮,避免用户直接看到,但仍能触发formId的获取。 封装的步骤大致如下: 1. 创建一个全局变量或状态管理工具(如Redux或Taro的Store)来存储formId。 2. 编写一个统一的`submitEvent`处理函数,该函数在接收到`bindSubmit`事件时,获取formId并保存。 3. 使用CSS将提交按钮设为透明或不可见,确保用户不会直接触发提交,但事件仍能正常触发。 4. 在需要发送模板消息时,从全局存储中获取最近的formId并发送给服务器。 通过这样的封装,可以确保在用户不察觉的情况下尽可能多地获取formId,从而提高模板消息的发送能力。不过,要注意的是,尽管如此,仍应遵循微信的使用规范,避免过度打扰用户,确保良好的用户体验。同时,需要在服务端检查formId的有效性,以防止无效消息的发送。