小程序群發(fā)短信,借助云開發(fā)5行代碼實(shí)現(xiàn)短信群發(fā)功能
我們上面給單個(gè)手機(jī)發(fā)送驗(yàn)證碼的功能實(shí)現(xiàn)了,接下來就教大家如何群發(fā)短信。
老規(guī)矩,先看效果圖


1,編寫wxml頁面
簡單起見,我這里只定義一個(gè)輸入手機(jī)號(hào)的輸入框和一個(gè)button按鈕

對(duì)應(yīng)的代碼如下

2,獲取用戶輸入的手機(jī)號(hào)
我這里以*來分割手機(jī)號(hào),如下圖所示。

然后我們定義一個(gè)bindinput事件來獲取用戶輸入的內(nèi)容。

可以看到,我們成功的獲取到了用戶輸入的手機(jī)號(hào)了。

但是官方文檔里已經(jīng)說明,我們?nèi)喊l(fā)短信的時(shí)候需要用到的是一組手機(jī)號(hào),也就是說需要用數(shù)組來存放數(shù)據(jù)。但是我們這里是一個(gè)字符串。那么我們就要分割字符串成數(shù)組了。
3,分割字符串成數(shù)組
我們分割字符串用到的是字符串的split()方法

當(dāng)然觸發(fā)的時(shí)機(jī),應(yīng)該是在用戶點(diǎn)擊群發(fā)按鈕的時(shí)候。那么我們就為群發(fā)按鈕定義bindtap點(diǎn)擊事件send

可以看到我們成功的把字符串分割成了數(shù)組。

但是我們數(shù)組里的手機(jī)號(hào)前面有個(gè)回車鍵,所以安全起見,我們?cè)诜指钭址?,需要先把這回車鍵給剔除掉。
4,去除字符串里的回車鍵
去除字符串里的回車鍵語法如下
字符串.replace(/[\r\n]/g, "")
可以看到我們只需要調(diào)用字符串.replace方法即可,后面括號(hào)里跟的是回車鍵對(duì)應(yīng)的正則表達(dá)式。這里不需要記住,后面用的時(shí)候來我筆記這里復(fù)制就行了。

可以看到我們剔除回車鍵以后,再分割的字符串里就沒有回車鍵了。
5,遍歷數(shù)組給手機(jī)號(hào)前面+86
如果你有仔細(xì)閱讀官方文檔,可以看到我們?nèi)喊l(fā)的手機(jī)號(hào)前面必須以+86開頭。并且每次群發(fā)的手機(jī)號(hào)不能超過1000條。

那么我們接下來就要遍歷數(shù)組,給每個(gè)手機(jī)號(hào)前面都添加‘+86’了。
當(dāng)然了這里有很多種方法來實(shí)現(xiàn)這一目的,我這里用一個(gè)for循環(huán)和一個(gè)map方法來分別實(shí)現(xiàn)下。

可以看出用map方法更簡介一點(diǎn)。但是對(duì)于新手來說第二種方法可能不是很好理解。所以這里你用那種方法都可以,不做強(qiáng)制要求。
5-1,通過for循環(huán)來實(shí)現(xiàn)

5-2,通過map方法來實(shí)現(xiàn)

6,編寫群發(fā)短信的內(nèi)容
那么我們接下來要做的就是實(shí)現(xiàn)群發(fā)功能了。我們這里要想成功的實(shí)現(xiàn)群發(fā),需要兩個(gè)元素
要群發(fā)的短信內(nèi)容
要群發(fā)的手機(jī)號(hào)
關(guān)于手機(jī)號(hào)和群發(fā)內(nèi)容都有要求

我們?nèi)喊l(fā)手機(jī)號(hào)這里已經(jīng)符合要求了,接下來就是群發(fā)的內(nèi)容了。群發(fā)內(nèi)容最長不能超過60個(gè)字節(jié),一個(gè)漢字通常2~3個(gè)字節(jié)。也就是說我們短信內(nèi)容不能超過20個(gè)字,所以群發(fā)的短信一定要精細(xì)。用最少的字來吸引用戶。
這里其實(shí)就是一個(gè)input來獲取用戶輸入的內(nèi)容就行了。我不再多講,直接把代碼貼出來。

在js里獲取用戶輸入的短信內(nèi)容

現(xiàn)在完事具備,只欠一個(gè)云函數(shù)了
7,編寫群發(fā)短信的云函數(shù)
短信內(nèi)容和群發(fā)的手機(jī)號(hào)都已經(jīng)成功拿到了,我們接下來就要來編寫群發(fā)的云函數(shù)了。

云函數(shù)其實(shí)我們短信驗(yàn)證碼那一節(jié)基本上一樣,區(qū)別就是
短信驗(yàn)證傳入的是:驗(yàn)證碼+單個(gè)手機(jī)號(hào)
群發(fā)傳入的是:短信內(nèi)容+多個(gè)手機(jī)號(hào)
云函數(shù)編輯好,記得重新部署下。
8,調(diào)用云函數(shù)實(shí)現(xiàn)群發(fā)
上面云函數(shù)編輯好了,也部署好了,接下來就是要調(diào)用云函數(shù)實(shí)現(xiàn)短信群發(fā)了。

調(diào)用其實(shí)很簡單。
9,群發(fā)演示失敗
接下來我們就要驗(yàn)證自己的勞動(dòng)成果了。如下,我發(fā)這樣的內(nèi)容給兩個(gè)手機(jī)號(hào)。為什么是兩個(gè)呢,我這里是學(xué)習(xí),要節(jié)省短信條數(shù)。官方只送我們1000條。所以要省著點(diǎn)用。
其實(shí)群發(fā)兩個(gè)手機(jī)號(hào),和群發(fā)1000個(gè)沒區(qū)別,只要群發(fā)兩個(gè)成果,那么群發(fā)1000個(gè)也一樣的。
辛辛苦苦編寫好了,測(cè)試了下,居然報(bào)錯(cuò)
什么鬼,代碼明明沒有錯(cuò)誤啊,程序員有時(shí)候就是莫名的自信。
官方給的發(fā)送成果返回字段如下
石頭哥發(fā)送返回結(jié)果如下
百思不得其解啊。不會(huì)真是代碼寫錯(cuò)了吧。。。。
還好石頭哥比較聰明,翻譯了一下報(bào)錯(cuò)信息。
發(fā)送時(shí)間限制,也沒看到官方文檔有說時(shí)間限制啊。后來又去官方文檔翻來覆去,終于在一個(gè)角落里看到了這句話。
原來是石頭哥寫文章太晚了。。。。
本來想寫完文章,直接錄講解視頻給大家的,,,,看來只能等第二天8-22:00來續(xù)寫這篇文章了。。。。
10,群發(fā)演示成功
終于等到了第二天8點(diǎn)47,下面我們把昨天的群發(fā)短信再演示一遍,看這次能不能成功。
先來看我們的日志
可以看出日志上顯示成功的發(fā)送兩個(gè)。那么收到的短信長什么樣子,也給大家截個(gè)圖。
第一個(gè)手機(jī)號(hào)是安卓手機(jī)
第二個(gè)手機(jī)號(hào)是蘋果手機(jī)
到這里我們的群發(fā)短信功能就完整的實(shí)現(xiàn)了。
細(xì)心的同學(xué)可能看到了,我們短信里有個(gè)鏈接,其實(shí)這個(gè)鏈接可以實(shí)現(xiàn)我們短信喚起小程序功能的。想想看,我們給用戶群發(fā)短信的目的,不就是為了讓用戶重新回到我們小程序嗎。所以短信能喚起小程序,是不是方便了用戶呢。下一節(jié)給大家講短信喚起小程序的功能實(shí)現(xiàn)。
系列課程,持續(xù)更新中,歡迎關(guān)注“編程小石頭”