zoukankan      html  css  js  c++  java
  • 小程序订阅消息(服务通知)实现 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.在小程序的社区发现有小伙伴说,真机测试不敢点 总是询问 的按钮。怕点了,后面就再也没办法拉起授权测试了。其实开发人员一般都是用自己的微信测试的,微信开发工具上的清缓存菜单里面就有清除授权的选项,直接在开发工具里清掉,就相当于清掉了手机的授权。重新编译预览就能看见效果。 还是放一下图吧:

    在这里插入图片描述

  • 相关阅读:
    分布式架构总汇【转】
    spring注解
    lombok安装和使用
    dubbo配置
    关于dubbo的负载均衡
    maven工作的过程
    android基础---->子线程更新UI
    JavaScript中有时候需要获取当前的时间戳
    Ubuntu 安装mysql
    nodejs 语法很特别的地方
  • 原文地址:https://www.cnblogs.com/onesea/p/15005037.html
Copyright © 2011-2022 走看看