借助云開發(fā)實現(xiàn)小程序訂閱消息和模板消息的推送功能
之前的模板消息推送,將在2020年1月10日下線,所以我們不得不使用訂閱消息了。
我們先來看下訂閱消息的官方簡介。

接下來我們就來借助云開發(fā),來快速實現(xiàn)小程序消息推送的功能。
一:獲取模板 ID
這一步和我們之前的模板消息推送是一樣的,也是先添加模板,然后拿到模板id

首先是開通訂閱消息功能,很簡單,如下圖

由于長期性訂閱消息,目前僅向政務民生、醫(yī)療、交通、金融、教育等線下公共服務開放,后期將逐步支持到其他線下公共服務業(yè)務。僅就線下公共服務這一點,長期性訂閱消息就和大部分開發(fā)者無緣了。 所以我們這里只能以使用一次性訂閱消息為例。

如上圖,我們從公共模板庫里選擇一個一次性訂閱的模板。然后編輯模板如下圖

下圖就是我們添加好的模板,下圖的模板id就是我們需要的。

二,請求用戶授權
我們做訂閱消息授權時,只能是用戶點擊或者支付完成后才可以調起來授權彈窗,官方是這么要求的:

我們這里用到了wx.requestSubscribeMessage這個方法,來獲取用戶的授權。
1,編寫index.wxml代碼

2,編寫index.js代碼,實現(xiàn)點擊獲取授權

這一步tmplIds里的一串字符,就是我們自己添加的模板id
3,點擊按鈕運行效果如下 開發(fā)者工具模擬器上點擊授權彈窗是這樣的:

手機上的授權彈窗是這樣的:

可以看到,這里顯示的就是我們添加的 ‘上課提醒’的模板。 細心的同學可以看到, 真機上多了一個 ‘總是保持以上選擇,不再詢問’ 其實,你自己仔細多品一些。也能明天,我們正常訂閱消息授權時,用戶允許的話,你只能推送一次消息。也就是用戶允許一次,我們就可以推送一條消息給用戶,并且這個允許不存在過期。所以我們可以讓用戶盡量多的點擊允許,這樣我們就可以盡量多的給用戶發(fā)送消息了。
這里用戶允許后,我們就可以給用戶推送消息了,接下來我們來借助云開發(fā)的云函數(shù)來實現(xiàn)消息推送功能。
三,獲取用戶的opneid
先來看官方爸爸是怎么說的。

可以看出官方提供了兩種方式,我們這里使用云調用。說白了就是在云函數(shù)里調用推送功能。
推送所需參數(shù)

可以看到我這里用來openapi功能,并且需要用到用戶的opneid,關于openid的獲取,我之前有寫過文章,也錄過視頻的。文章的話,大家去翻下我歷史的文章,視頻的話,點擊這個即可:《借助云函數(shù)獲取用戶openid》這里的openid的獲取我就不再詳細講解了,把對應云函數(shù)的代碼給大家貼出來。

在使用云開發(fā)時,有幾點需要注意的
1,需要在project.config.json里創(chuàng)建云函數(shù)目錄如下圖

2,需要在app.js里初始化云開發(fā)環(huán)境

至于云開發(fā)的環(huán)境id從哪里拿,我視頻里也講過很多遍了,直接去看我視頻或者翻看我歷史文章即可。《零基礎入門云開發(fā)視頻》
四,用云函數(shù)實現(xiàn)消息推送
我們只需要創(chuàng)建一個云函數(shù)如下,然后填入用戶的openid,要跳轉的小程序頁面鏈接,模板內容,模板id即可。通常這些數(shù)據(jù)都應該傳進來,簡單起見,我就把這里的模板內容寫成固定的。

注意:我在編寫上面的代碼時,推送內容的key必須和小程序模板里的key保持一致,否則就會報如下錯誤。

然后看下調用這個云函數(shù)的地方

如果用戶沒有授權,我們推送會報如下錯誤

如果用戶授權過,我們就可以成功推送了,推送后的打印日志如下
還記得我們真機上的授權嗎,如果用戶只是點擊了允許,沒有選擇一直允許,那我我們在推送成功一次后,如果再次推送,就需要用戶重新授權。否則,還是會報這個錯誤的
所以我們用戶點擊一次允許,我們就可以推送一次消息,比如,我點擊了4此允許那么我就可以成功的推送4次
效果圖

可以看到,我們成功的收到 上課提醒的模板消息,點擊進去,就是我們具體的推送內容

其實我這是連續(xù)收到了4條消息,因為我點擊了4次允許推送,所以就可以成功的推送4次。
到這里我們就完整的實現(xiàn)模板消息推送功能了,
