iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >微信小程序——服务通知,发送订阅消息
  • 681
分享到

微信小程序——服务通知,发送订阅消息

微信小程序小程序微信 2023-08-16 22:08:23 681人浏览 独家记忆
摘要

一、什么是消息推送 二、整体效果 三、实现步骤 1 小程序开通订阅消息 2 postapi测试效果 三、uniapp配置 这里有个需要特别注意的点,我们要给用户发送消息,就必须引导用户授权,如下 因为用户不点击允许,你是没有办法

一、什么是消息推送

879572be08624b21959549689920618f.png

二、整体效果

在这里插入图片描述

三、实现步骤

1 小程序开通订阅消息

image.png
image.png

2 postapi测试效果

image.png

三、uniapp配置

这里有个需要特别注意的点,我们要给用户发送消息,就必须引导用户授权,如下

image.png
因为用户不点击允许,你是没有办法给用户推送消息的。每一次授权只允许发送一条消息,所以如果你想尽量多的发送消息,就得尽量多的引导用户授权。

wx.requestSubscribeMessage这个方法,来获取用户的授权。
前端代码:

//获取授权的点击事件getAuthority() {console.log("点击了")wx.requestSubscribeMessage({tmplIds: ['grwQUkOPAaJg-pzSZWeZawYTRFjmKmVPbkfckxWcPYQ'], //这里填入我们生成的模板idsuccess(res) {console.log('授权成功', res)wx.getUserInfo({  //成功后会返回  success:(res)=>{console.log(res);// 把你的用户信息存到一个变量中方便下面使用let userInfo= res.userInfo//获取openId(需要code来换取)这是用户的唯一标识符// 获取code值wx.login({  //成功放回  success:(res)=>{console.log("返回",res);let code=res.codeconsole.log("code",code);// 通过code换取openIdwx.request({  url: `https://api.weixin.qq.com/sns/jscode2session?appid=wxf85bf469c5f5d12b&secret=76a1479c2adc31ab8eeefd23a09d4410&js_code=${code}&grant_type=authorization_code`,  success:(res)=>{console.log(res);userInfo.openid=res.data.openidconsole.log("openid",userInfo.openid);  }})  }})  }})},fail(res) {console.log('授权失败', res)}})},

四、 后台整体编写

image.png
1、对应实体类
PushDTO.java

package com.soil.data.dto.push;import lombok.Data;import java.util.Map;@Datapublic class PushDTO {        private String touser;        private String template_id;        private String page = "pages/index/index";        private MiniprogramData miniprogram;        private String emphasisKeyWord = "keyword1.DATA";        private Map data;}

TemplateData.java

package com.soil.data.dto.push;import lombok.Data;@Datapublic class TemplateData {    private String value;    public TemplateData(String value) {        this.value = value;    }}

MiniprogramData.java

package com.soil.data.dto.push;import lombok.Data;@Datapublic class MiniprogramData {    private String appid;    private String pagepath;}

代码实现

package com.soil.biz.service.push;import com.alibaba.fastJSON.JSONObject;import com.soil.core.exception.AppServiceException;import com.soil.core.exception.ExceptionDefinition;import com.soil.core.util.DateUtils;import com.soil.core.util.Log;import com.soil.data.dto.push.MiniprogramData;import com.soil.data.dto.push.PushDTO;import com.soil.data.dto.push.TemplateData;import com.soil.data.enums.UserLoginType;import lombok.SneakyThrows;import okHttp3.OkHttpClient;import okhttp3.Request;import org.springframework.http.ResponseEntity;import org.springframework.stereotype.Service;import org.springframework.WEB.client.RestTemplate;import java.util.Date;import java.util.HashMap;import java.util.Map;@Servicepublic class PushBizService {    private OkHttpClient okHttpClient = new OkHttpClient();    public static final String WX_ACCESS_TOKEN = "https://api.weixin.qq.com/cgi-bin/token?grant_type={grant_type}&appid={appid}&secret={secret}";        @SneakyThrows    public ResponseEntity pushOneUser(PushDTO pushDTO) {        final String SEND_INFO_URL = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=";        RestTemplate restTemplate = new RestTemplate();        String appId = "wxf85bf469c5f5d12b";        String appSecret = "76a1479c2adc31ab8eeefd23a09d4410";        // 获取accessTokenJson        String accessTokenJson = getAccessTokenJSON(appId, appSecret);        // 获取accessToken        JSONObject jsonObject = JSONObject.parseObject(accessTokenJson);        String accessToken = jsonObject.getString("access_token");        // 获取过期时间        Long expiresTime = jsonObject.getLong("expires_in");        System.out.println(accessToken);        String url = SEND_INFO_URL + accessToken;        return restTemplate.postForEntity(url, pushDTO, String.class);    }        public static void main(String[] args) {        String openid = "o7TAS4zVL5D3IlVEnucI09FrCwjE";        String templateId = "grwQUkOPAaJg-pzSZWeZawYTRFjmKmVPbkfckxWcPYQ";        //拼接推送的模版        PushDTO pushDTO = new PushDTO();        //用户的openId        pushDTO.setTouser(openid);        pushDTO.setTemplate_id(templateId);        MiniprogramData miniprogram = new MiniprogramData();        pushDTO.setMiniprogram(miniprogram);        Map data = new HashMap<>();        data.put("thing9", new TemplateData("新婴儿奶瓶"));        data.put("character_string1", new TemplateData("11231323"));        data.put("amount24", new TemplateData("0.01"));        data.put("time21", new TemplateData("2023-02-16"));        pushDTO.setData(data);        System.out.println("发送的模板" + data);        Date date = new Date();        System.out.println(DateUtils.fORMat(date, DateUtils.DATE_TIME_PATTERN));        PushBizService pushBizService = new PushBizService();        ResponseEntity stringResponseEntity = pushBizService.pushOneUser(pushDTO);        System.out.println(stringResponseEntity);    }        private String getAccessTokenJSON(String appId, String appSecret) throws Exception {        String json = okHttpClient.newCall(                new Request.Builder().url("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="                        + appId + "&secret=" + appSecret).build())                .execute().body().string();        JSONObject jsonObject = JSONObject.parseObject(json);        Integer errcode = jsonObject.getInteger("errcode");        if (errcode == null || errcode == 0) {            return json;        } else {            Log.info("[微信 getAccessToken] 回复失败 回复报文:" + json);            throw new AppServiceException(ExceptionDefinition.THIRD_PART_SERVICE_EXCEPTION);        }    }}

来源地址:https://blog.csdn.net/weixin_44391817/article/details/127763984

--结束END--

本文标题: 微信小程序——服务通知,发送订阅消息

本文链接: https://www.lsjlt.com/news/372160.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 微信小程序——服务通知,发送订阅消息
    一、什么是消息推送 二、整体效果 三、实现步骤 1 小程序开通订阅消息 2 postApi测试效果 三、uniapp配置 这里有个需要特别注意的点,我们要给用户发送消息,就必须引导用户授权,如下 因为用户不点击允许,你是没有办法...
    99+
    2023-08-16
    微信小程序 小程序 微信
  • uniapp微信小程序订阅消息发送服务通知--超详细
    uniapp微信小程序订阅消息发送服务通知 由于公司需求,刚学完的小程序的我,要求开发一个直播通知的微信小程序,学了vue的我,选择还是使用uniapp开发,wx原生语法学完已经快忘了。在利用uniapp写代码的过程中,遇到很多问题,通过这...
    99+
    2023-08-16
    微信小程序 小程序 django
  • 小程序发送订阅消息,微信公众号发送消息模板
    首先讲两个注意事项 小程序和微信公众号的用户openid是不同的。 小程序需要用户手动授权订阅消息通知(一次性订阅是订阅一次发一次,长期订阅可以多发)。 关于小程序和公众号AppID和AppSecret的获取可以自行百度一下,挺简单的。 小...
    99+
    2023-08-31
    小程序 php
  • 微信小程序订阅消息
    subscribeMessage.send | 微信开放文档 由于业务需求 , 需要实现小程序订单状态发送给用户 , 于是微信小程序发送订阅消息就被找到了 这里前端是使用了uniapp , 具体实现方式不清楚,就不瞎bb了 后端这里就是...
    99+
    2023-09-03
    微信小程序 小程序 php
  • 微信小程序-小程序订阅消息(四)
    一、小程序订阅消息 小程序订阅消息 | 微信开放文档 功能介绍 消息能力是小程序能力中的重要组成,我们为开发者提供了订阅消息能力,以便实现服务的闭环和更优的体验。 订阅消息推送位置:服务通知订阅消息下发条件:用户自主订阅订阅消息卡片跳转能力...
    99+
    2023-09-06
    微信小程序 小程序
  • 小程序订阅消息
    小程序的订阅通知,可以极大提升用户的使用体验感,消息能力是小程序能力中的重要组成。 小程序的订阅通知权限申请会以卡片的形式从底部弹出,用户点击订阅消息按钮之后,微信会向开发者服务器推送消息。 消息类型 1. 一次性订阅消息 一次性订阅,相...
    99+
    2023-09-02
    小程序 微信小程序 微信
  • PHP调用微信消息订阅推送
    分享一下消息订阅推送 相信小伙伴们在做项目的时候都会有消息订阅推送的功能,比方说做外卖项目或者是商城的时候, 用户下单,需要给用户微信推送一条订阅消息 废话不多说 直接上代码 1.首先需要在微信小程序...
    99+
    2023-08-31
    微信 php 微信小程序
  • uni-app结合.NET 7实现微信小程序订阅消息推送
    目录功能介绍消息类型基本流程注意事项获取模板IDuni-app代码服务端代码生成订单发送模板消息总结微信小程序的订阅消息是小程序的重要能力之一,为实现服务的闭环提供更优的体验。订阅消...
    99+
    2023-02-05
    uni-app .NET 7小程序消息推送 uni-app  小程序消息推送
  • 微信小程序如何实现订阅消息功能
    这篇文章将为大家详细讲解有关微信小程序如何实现订阅消息功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。小程序模板消息即将被废弃掉,于是有了新接口wx.requestSu...
    99+
    2024-04-02
  • Java实现微信小程序发送服务通知
    Java代码实现发送微信小程序服务通知 笔者在上个月接到一个需求,大概是需要计算一条数据的最大办理时间从而发送任务超期的微信小程序服务通知,俺也是第一次接触到需要调用微信的API去进行发送消息,该博客...
    99+
    2023-09-13
    微信小程序 java 小程序 spring cloud java-rabbitmq
  • 怎么用微信小程序API发送客服消息
    本篇内容主要讲解“怎么用微信小程序API发送客服消息”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用微信小程序API发送客服消息”吧!发送客服消息当用户和小程序客服产生特定动作的交互时(具体...
    99+
    2023-06-26
  • 微信小程序怎样实现滚动消息通知
    这篇文章给大家分享的是有关微信小程序怎样实现滚动消息通知的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。微信小程序实现上下滚动消息提醒,主要是利用swiper组件来实现,swipe...
    99+
    2024-04-02
  • uniapp小程序订阅消息推送+Thinkphp5后端代码教程示例
    记录一下通过uniapp开发小程序消息推送的实例,配合后端tp推送,之前写的项目是微信小程序而且后端是原生php,这次通过项目记录一下 目录 回顾access_token获取规则以及思路 第一步:设计前端触发订阅事件第二步:设...
    99+
    2023-08-16
    uni-app 小程序 数学建模 Thinkphp
  • 详解php微信小程序消息推送配置
    第一步 官网下载对应版本的cryptoDemo 下载地址:https://wximg.gtimg.com/shake_tv/mpwiki/cryptoDemo.zip 第二步 创建检...
    99+
    2024-04-02
  • java编写微信小程序消息提醒推送
    微信小程序官方文档:发送订阅消息 | 微信开放文档 一.先制定模板,我以已删除的模板为例 二.java后台创建小程序 Vo类,用于封装传送的参数。 import lombok.Data;@Datapublic class Templat...
    99+
    2023-09-01
    微信小程序 java 小程序
  • 微信小程序|基于小程序实现发送语音消息及转文字
    此文主要在小程序内聊天的基础上实现语音发送及文字转换。 小程序 账号创建及工具准备 页面大体设计 实现录音功...
    99+
    2023-09-11
    小程序 语音识别
  • 小程序发送模板消息给用户 —— 一次性模板实现“长期订阅”
    大家好!我是我玩亚索我会C,在写小程序时,我们会有向用户发送消息的需求,比如发送提醒通知,或者是一些重要通知来形成一个服务的闭环。这就要用到微信的发送消息功能了,下面我使用Java语言来详细演示下如何使用一次性订阅消息发送消息给用户。 ...
    99+
    2023-08-17
    微信小程序 javascript java 小程序 开发语言
  • 微信小程序有多少种推送消息方式
    这篇文章主要介绍微信小程序有多少种推送消息方式,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!微信小程序有5种推送消息的方式,分别为:1、小票机订单提醒,实现对商家的消息提醒;2、短信提醒;3、模板消息,各种动态可及时...
    99+
    2023-06-27
  • 【微信小程序】wx.requestSubscribeMessage无法唤起小程序订阅弹窗
    报错信息:requestSubscribeMessage:fail can only be invoked by user TAP gesture. 报错原因:在某个场景的方法里面调用而不是直接通过用户点击 解决方法:一般可做成显示一个弹框...
    99+
    2023-08-17
    微信小程序
  • 怎么在微信小程序中配置消息推送
    这篇文章将为大家详细讲解有关怎么在微信小程序中配置消息推送,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。第一步官网下载对应版本的cryptoDemo第二步创建检查文件wxcheck.php这...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作