1. 程式人生 > 其它 >小程式訂閱訊息(服務通知)實現 WX.REQUESTSUBSCRIBEMESSAGE

小程式訂閱訊息(服務通知)實現 WX.REQUESTSUBSCRIBEMESSAGE

先上效果圖:

最近做了一個小程式的服務通知,雖然做好了,但過程還是比較坎坷,記錄下,希望能給需要的夥伴一個參考

先上文件:小程式服務通知訂閱訊息開發文件

第一步:根據官方文來,先在微信公眾平臺登入小程式後臺配置模板,獲取模板id:,這塊的模版可以在公共模版庫裡選。也可以新申請,但是需要3-7天才能出稽核結果。

下面是模版生成的效果圖。

第二步,獲取下發許可權
在獲取下發許可權之前,需要先獲取小程式code和訂閱訊息的模板id給服務端,以便後臺人員進行服務端配置

// 這裡是獲取下發許可權地方,根據官方文件,可以根據  wx.getSetting() 的 withSubscriptions   這個引數獲取使用者是否開啟訂閱訊息總開關。後面我們需要獲取使用者是否同意總是同意訊息推送。所以這裡要給它設定為true 。
wx.getSetting({
      withSubscriptions: true,   //  這裡設定為true,下面才會返回mainSwitch
      success: function(res){   
      
        // 調起授權介面彈窗
        if (res.subscriptionsSetting.mainSwitch) {  // 使用者打開了訂閱訊息總開關
          if (res.subscriptionsSetting.itemSettings != null) {   // 使用者同意總是保持是否推送訊息的選擇, 這裡表示以後不會再拉起推送訊息的授權
            let moIdState = res.subscriptionsSetting.itemSettings[tmplIds];  // 使用者同意的訊息模板id
            if(moIdState === 'accept'){   
              console.log('接受了訊息推送');

            }else if(moIdState === 'reject'){
              console.log("拒絕訊息推送");

            }else if(moIdState === 'ban'){
              console.log("已被後臺封禁");

            }
          }else {
          	// 當用戶沒有點選 ’總是保持以上選擇,不再詢問‘  按鈕。那每次執到這都會拉起授權彈窗
            wx.showModal({
              title: '提示',
              content:'請授權開通服務通知',
              showCancel: true,
              success: function (ress) {
                if (ress.confirm) {  
                  wx.requestSubscribeMessage({   // 調起訊息訂閱介面
                    tmplIds: [tmplIds],
                    success (res) { 
                      console.log('訂閱訊息 成功 ');
                      console.log(res);
                    },
                    fail (er){
                      console.log("訂閱訊息 失敗 ");
                      console.log(er);
                    }
                  })     
                        
                }
              }
            })
          }

        }else {
          console.log('訂閱訊息未開啟')
        }      
      },
      fail: function(error){
        console.log(error);
      },
    })

到這裡小程式端的程式碼就完了,第三步就是服務端要做的事情了。

這裡說下需要注意的點:
1.配置模板獲取模板id,是在小程式後臺,而不是關聯的公眾號後臺!!!

2. 授權彈窗需要使用者點選才能拉起,比如直接在 onload 方法中是無法調起的,可以在需要拉起的地方做一個彈窗詢問,引導使用者點選拉起授權
3.授權彈窗上的,總是保持以上選擇,不再詢問這個選項,只有真機上有,模擬器上只有是否同意訊息推送彈窗。建議測試直接上真機
4.後端 subscribeMessage.send 介面的請求引數page, 配置路徑為 pages/index/index
5.在小程式的社群發現有小夥伴說,真機測試不敢點 總是詢問 的按鈕。怕點了,後面就再也沒辦法拉起授權測試了。其實開發人員一般都是用自己的微信測試的,微信開發工具上的清快取選單裡面就有清除授權的選項,直接在開發工具裡清掉,就相當於清掉了手機的授權。重新編譯預覽就能看見效果。 還是放一下圖吧: