接下來的幾篇小豬將圍繞模板消息推動的功能分別向讀者介紹小程序的幾個功能今天要介紹的是獲取formId為什么要獲取formId在回答這個問題之前先簡單的介紹下微信的模板消息功能。在一開 ...
接下來的幾篇小豬將圍繞模板消息推動的功能分別向讀者介紹小程序的幾個功能
今天要介紹的是獲取formId
在回答這個問題之前先簡單的介紹下微信的模板消息功能。
在一開始,模板消息這個權限可不是所有都公眾號都有的,即使你已經交了300塊完成了微信認證。只有一些比較牛逼的企業例如說各個銀行,人家的需求是類似在每次有交易信息的時候通知用戶,這樣的功能簡直不能太好,人家本來是通過短信通知的,現在通過微信就可以了,而且還不收費,走運營商的短信接口可是需要大概一毛一條的。
所以這個權限是只有走內部流程的。
大概是在13年底的時候微信向所有認證的服務號開放了申請接口。這下模板消息這個功能就徹底開放出來了,每一個公眾號都可以發送自己的模板消息,用戶會在該公眾號的回話窗口看到模板消息。
可是小程序是沒有單獨的回話窗口的,要使用模板消息,那用戶收到的模板消息會在哪呢?
答案是在微信的單獨的一個“服務通知”回話框里。
可是如果每一個小程序都可以像公眾號那樣無限制的發送模板消息的話,那這個“服務通知”的會話框很快就會被占領。
所以必須有一定的限制小程序使用模板消息,微信目前的限制是在如下兩種情況下小程序才能夠正常的使用模板消息:
1. 在小程序內使用了微信支付接口,
2. 在小程序里用戶點擊了表單,而且該表單的report-submit屬性值為true時。
在上述第二種情況下,小程序框架會給出一個formid,利用這個formId才能正常發送模板消息。
使用類似下面的代碼,注意表單的report-submit屬性。
// demo.wxml
<form bindsubmit="formSubmit" bindreset="formReset" report-submit = "true">
<view class="section section_gap">
<view class="section__title">checkbox</view>
<checkbox-group name="checkbox">
<label><checkbox value="checkbox1"/>checkbox1</label>
<label><checkbox value="checkbox2"/>checkbox2</label>
</checkbox-group>
</view>
<view class="btn-area">
<button formType="submit">Submit</button>
<button formType="reset">Reset</button>
</view>
</form>
然后在對應的js文件里加上:
Page({
formSubmit: function(e) {
console.log('form發生了submit事件,fromId為:', e.detail.formId)
},
formReset: function() {
console.log('form發生了reset事件')
},
onLoad:function(){
console.log('sform load')
}
})
單機提交按鈕之后可以看到運行結果:
form發生了submit事件,攜帶數據為: the formId is a mock one
因為我們是在IDE中測試,所以得到的formId值為the formId is a mock one。在真機中我們可以得到一個具體的值,利用該值結合其他參數我們就可以發送模板消息啦。
下一篇小豬將使用flask結合mysql數據庫來做一個demo,把這個formId 存儲起來供下次使用。