• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

小程序订阅消息(服务通知)实现 WX.REQUESTSUBSCRIBEMESSAGE

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

 

先上效果图:

最近做了一个小程序的服务通知,虽然做好了,但过程还是比较坎坷,记录下,希望能给需要的伙伴一个参考

先上文档:小程序服务通知订阅消息开发文档

第一步:根据官方文来,先在微信公众平台登录小程序后台配置模板,获取模板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.在小程序的社区发现有小伙伴说,真机测试不敢点 总是询问 的按钮。怕点了,后面就再也没办法拉起授权测试了。其实开发人员一般都是用自己的微信测试的,微信开发工具上的清缓存菜单里面就有清除授权的选项,直接在开发工具里清掉,就相当于清掉了手机的授权。重新编译预览就能看见效果。 还是放一下图吧:


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
php实现微信小程序消息通知发布时间:2022-07-18
下一篇:
微信小程序订阅消息,我踩过的坑都在这里了!发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap