微信小程序簡單收集formid無限次發送模闆消息
發表時(shí)間:2021-3-31
發布人(rén):融晨科技
浏覽次數:96
消息通知對于(yú)某些應用是(shì)非常有用的(de),APP發送消息通知基本是(shì)沒有限制的(de),而(ér)微信小程序是(shì)通過微信的(de)模闆消息通知實現的(de),微信模闆消息目前來(lái)看還是(shì)通知非常有效,不(bù)存在(zài)垃圾信息過多的(de)問題,還可以(yǐ)通過點擊消息直接進入應用詳細。如下圖所示
但是(shì),爲(wéi / wèi)了(le/liǎo)防止應用亂發通知,小程序做了(le/liǎo)一些限制,隻有兩種方法可以(yǐ)給用戶發送模闆消息,一是(shì)用戶支付後可發送3條模闆消息;二是(shì)頁面發生一次提交表單行爲(wéi / wèi)可發送1條模闆消息,而(ér)且有個(gè)期限是(shì)7天内。如果某些應用需要(yào / yāo)多次發送模闆消息怎麽辦呢?比如最近我們做的(de)一個(gè)項目,涉及到(dào)多人(rén)物物交換,如果一個(gè)人(rén)發布了(le/liǎo)一個(gè)物品,可能收到(dào)多個(gè)人(rén)的(de)交換請求,而(ér)如果交換請求不(bù)通過模闆消息推送給用戶的(de)話,那麽這(zhè)個(gè)應用就(jiù)是(shì)缺失的(de)。
7天内無限次發送模闆消息的(de)做法很簡單,就(jiù)是(shì)根據“提交1次表單可推送1條模闆消息,多次提交表單之(zhī)間是(shì)相互獨立的(de)”這(zhè)個(gè)規則,隻要(yào / yāo)在(zài)小程序前端,收集足夠多的(de)formid就(jiù)行了(le/liǎo)。比如把用戶所有的(de)點擊都做成form表單提交,把想要(yào / yāo)的(de)鏈接做成表單提交。但在(zài)實際操作中會遇到(dào)以(yǐ)下問題,因爲(wéi / wèi)隻有button組件才能提交表單,如果要(yào / yāo)把文字鏈接和(hé / huò)圖片按鈕做成表單提交,需要(yào / yāo)在(zài)上(shàng)面套一個(gè)form和(hé / huò)button組件,如下代碼
而(ér)button組件在(zài)小程序裏是(shì)有默認樣式的(de),你會發覺樣式變得非常難看,如下圖。
本來(lái)樣式是(shì)這(zhè)樣的(de)
加了(le/liǎo)form和(hé / huò)button組件後變成了(le/liǎo)這(zhè)樣
如何解決呢?最好的(de)方式就(jiù)是(shì)通過CSS定義覆蓋原有button的(de)樣式。于(yú)是(shì),我們程序員寫出(chū)了(le/liǎo)通用的(de)代碼,适用于(yú)整個(gè)小程序。
button.form_button{background-color:transparent;padding:0;margin:0;display:inline;position:static;border:0;padding-left:0;padding-right:0;border-radius:0;font-size:0rpx;color:transparent;}
button.form_button::after{content:'';width:0;height:0;-webkit-transform:scale(1);transform:scale(1);display:none;background-color:transparent;}
有個(gè)小問題需要(yào / yāo)注意一下,就(jiù)是(shì)原來(lái)傳遞的(de)data數據需要(yào / yāo)加在(zài)form上(shàng)面。
然後剩下的(de)問題就(jiù)是(shì)後台把收集到(dào)的(de)formid都上(shàng)傳到(dào)後台服務器保存,同時(shí)記錄過期時(shí)間。
服務器最好有個(gè)定時(shí)删除過期formid的(de)功能,增加查找可用formid的(de)速度。
後台發送模闆消息的(de)功能實現這(zhè)裏就(jiù)不(bù)多說(shuō)了(le/liǎo),可以(yǐ)參考官方文檔。