小程序怎么给用户推送消息

往小程序能发送消息吗?答案肯定是能的。

开通消息发送功能

进入微信公众平台,设置,开通小程序消息发送权限

配置消息发送模板

微信公众平台有三种消息推送方式

1、 开发者服务器接收消息推送

2、 云函数接收消息推送

3、微信云托管服务接收消息推送。

现在我们要看的是第一种。开发者服务器接收消息推送

开发者服务器接收消息推送

消息能力是小程序重要组成部分,我们为开发者提供了订阅消息的能力,以便实现服务的闭环和更优的体验。

订阅消息推送位置: 服务通知

订阅消息下发条件: 用户自主订阅

订阅消息卡片跳转能力: 点击查看详情或可跳转到小程序的页面

1、 先定义一个消息模板。

如下图,在微信公众平台订阅一个消息模板,用来定义消息的格式。我已经订阅成功了一个,具体步骤,可自行百度。

   

图1

2、获取小程序用户的openId

过程略,可百度

3、获取access_token.

access_token 是小程序全局唯一的后台接口调用凭据,调用大多数后台接口时都需使用。开发者可以通过getAccessToken接口获取并进行妥善保存。

为了access_token的安全性,后端API不能直接在小程序内通过wx.request调用,即api.weixin.qq.com不能被配置为服务器域名。开发者应在后端服务器使用getAccessToken获取access_token.

过程略

上边条件具备之后,开始整理发送消息到小程序上的内容

发送消息到小程序

下面就要调用小程序官方提供的发送消息的接口了。先看一下官方文档

   

图2

第一步,要引导用户授权,能够允许接收消息, 如图1.

下边是弹出授权消息的小程序代码

confirmMsg: function(e){

    wx.getSetting({
      withSubscriptions: true,   //  这里设置为true,下面才会返回mainSwitch
      success: function(res){   

        let  tmplIds = 'UblTSmgV_clnIbj5JT6tkbkFDCDSWHtX-dGazbtf9DE'
        // 调起授权界面弹窗
        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) {

                      wx.request({
                         url: 'http://localhost:9090/pro_api/test/sendOneUser/{openId}',
                        method: 'post',
                        data: {
                          
                        }
                      })
                    },
                    fail (er){
                      console.log("订阅消息 失败 ");
                      console.log(er);
                    }
                  })     
                        
                }
              }
            })
          }

        }else {
          console.log('订阅消息未开启')
        }      
      },
      fail: function(error){
        console.log(error);
      },
    })
  },

第二步, 用户授权允许后,调用后台java接口,生成消息内容,发送到微信平台,并通知小程序用户。

    RestTemplate restTemplate = new RestTemplate();
        String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" getAccesToken();

        WxMssVo msgVo = new WxMssVo();
        msgVo.setTouser(openId);
        msgVo.setTemplate_id(template_id);
        msgVo.setPage("pages/index/index");

        Mapm = new HashMap<>();
        m.put("thing1", new TemplateData("title content"));
        m.put("name4", new TemplateData("杭州"));
        m.put("date3", new TemplateData("2022年11月22日"));
        m.put("thing2", new TemplateData("content1"));
        m.put("thing8", new TemplateData("content2"));

        msgVo.setData(m);

        log.debug("msg content: {}", msgVo);
        ResponseEntityresponseEntity = restTemplate.postForEntity(url, msgVo, String.class);
        String resMsg = responseEntity.getBody();
        log.info("get Message Result:  {}", resMsg);
        return resMsg;

只要小程序端允许获取消息,并调用上边接口,根据微信用户的openId,发送到小程序用户,即可成功。

第三步,展示效果

   

图3

大功告成,往小程序上发送消息成功。

注意的问题

消息模板定义,除非你是学校等公立的机构主体,才能订购长期订阅的模板,其他只能订购一次性模板。

   

图4

第二个问题,在往微信平台发送消息内容时,需注意发送的内容有限制,否则会被校验出来,提示各种invalide date, invalide name等,无法发送,需按照下边注意一下即可。

   

图5

好了,基本就这些。

(0)

相关推荐

  • 微信小程序可以向用户推送消息了?

    微信小程序可以向用户推送消息了?

  • 微信小程序怎么给用户推送消息?

    在用户使用小程序时,商家在一些情况下需要向在使用小程序的用户推送消息,比如支付完成的消息.优惠提醒消息等.那这个功能要如何实现呢?我这里用第三方的一个小程序开发工具 [即速应用] 来演示一下.因为用这 ...

  • 如何彻底关闭全民小视频中的推送消息?

    相信很多小伙伴都有在使用全民小视频,其中的推送消息如何才能关闭呢?方法很简单,下面小编就来为大家介绍.具体如下:1. 首先,打开全民小视频.2. 进入软件后,点击右下角的"我的". ...

  • 王者营地怎么关闭营地小秘书推送消息

    王者营地怎么关闭营地小秘书推送消息 操作方法 01 在手机上点击王者营地软件,在打开的软件界面,点击右上角的消息提示选项.如图所示 02 点击右上角的消息图标后,打开聊天界面,能看到有个营地小秘书信息 ...

  • 三星怎么关闭推送消息

    三星怎么关闭推送消息: 1.进入手机的设定(也叫设置),在设备下属下找到应用程序管理器,并点击进入. 2.因为找到想关闭推送消息的软件,可以看到它的内存占用,点击进入. 3.这样就看到了应用程序信息, ...

  • 微信公众平台怎么推送消息给粉丝

    随着生活的日益快节奏化,平日人们只能利用碎片化时间来刷微信.在微信公众平台的信息推送中,如果信息编排过于简单.单调,势必会引起粉丝们的反感,让用户失去阅读的兴趣.那么微信公众平台如何推广?下面小编就为 ...

  • 怎么关闭苹果手机iPhone中腾讯视频的推送消息

    苹果手机是一款为广大消费者所喜爱的手机品牌,它颜值高,性能高,是值得选购的手机.使用此手机时,不少小伙伴还不太熟悉有关的操作技巧,因此常常存在困惑.比如:很多用户不知道怎么关闭苹果手机iPhone中腾 ...

  • 华为手机如何关闭软件推送消息通知

    华为手机是一款为广大消费者所喜爱的手机品牌,它颜值高,性能高,是值得选购的手机.使用此手机时,不少小伙伴还不太熟悉有关的操作技巧,因此常常存在困惑.比如:很多用户不知道怎么禁止软件推送消息通知,小编今 ...

  • 如何关闭百度App推送消息功能?

    百度App可以直接让用户进入百度搜索,对很多用户来说是非常方便的,但是有些用户反映百度经常会发送一些广告推送,想要关闭这些推送消息.接下来小编就给大家介绍一下具体的操作步骤.具体如下:1. 首先第一步 ...

  • 怎么关闭云闪付推送消息功能

    云闪付是最近非常流行的一款移动支付软件,有些用户不知道怎么关闭云闪付推送消息功能,接下来小编就给大家介绍一下具体的操作步骤.具体如下:1. 首先第一步打开手机中的[云闪付]App.2. 第二步进入软件 ...