• 教你制作微信公众号天气推送服务


    微信测试公众号推送服务

    1、完成效果😃

    ❓:为什么先说完成的效果呢?

    🙋:就像射箭🏹找不到箭靶🧿,那每天拉弓的意义在哪呢?

    先来了解一下本次练习要实现的效果、结果。

    通过代码编写,项目部署,能达到让用户关注改公众号后,每天定时推送(你想要的消息),例如:天气预报推送、生日推送、疫情相关数据推送(感染人数、风险地区)

    image-20220904024839012

    上面二维码是楼主自己做的,感兴趣的话可以扫码体验体验

    2、能学习到的一些知识点

    完成此练习的前提:1、拥有java代码基础 2、有一台云服务器或者永不关机的电脑💻(才能实现每天定点推送)(看网上说使用github也能实现定时推送)

    本练习使用 JAVA 语言实现,知识点包括:

    • SpringBoot框架的基本使用(aop相关、定时任务相关)
    • 相关工具包使用(Hutool工具包)
    • 第三方接口对接(微信公众号、腾讯地图、天气api、天行数据每日一句、英语翻译api)
    3、开始
    3.1、注册微信测试公众号

    https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

    image-20220904031113814

    点击此链接,使用微信扫码登录后,会自动创建一个测试公众号,重点注意appID、appsecret(等会要用)记住自己的就行,我这里打码为了账号安全

    image-20220904031326912

    3.2、分类

    分为两种:(这个分类是我自己取的名字,不是微信官方的)

    1、固定类推送消息

    ❓:固定类推送?什么意思?

    🙋:就是对每一个关注者都推送几乎相同的东西,不太通用,例如上面图片中的星座,每个关注者可能是不同的,固定类就相当于把它写死

    ❓:固定类推送有什么好处/优劣吗?

    🙋:代码相对简单、适用于只给一个人推送消息

    2、通用类推送消息

    🙋:通用类就是会对每一个关注者发送的消息会有不同。比如星座,用户关注后,公众号怎么知道关注者的星座,需要关注者自行设置生日,然后存储到数据库中,再发送消息模板时,读取关注者的生日,才能知道其星座(如果没懂,可以扫码关注最上面的二维码体验体验)

    🙋:代码相对复杂一些、有通用性

    3.3、创建SpringBoot项目

    maven依赖:

    <parent>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-parentartifactId>
            <version>2.4.3version>
    parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
    
        
        
        <dependency>
            <groupId>com.github.binarywanggroupId>
            <artifactId>weixin-java-mpartifactId>
            <version>3.3.0version>
        dependency>
    
        
        <dependency>
            <groupId>cn.hutoolgroupId>
            <artifactId>hutool-allartifactId>
            <version>5.7.16version>
        dependency>
        
        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
        dependency>
    
        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-testartifactId>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-testartifactId>
        dependency>
        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>4.12version>
        dependency>
    dependencies>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    3.3、小试牛刀🔪

    先来做个最简单的推送,明白其过程,后面自然就通

    将你注册的测试公众号的appiD和appsecret写上去,解耦

    wx:
      appID: 你的appID
      appsecret: 你的appsecret
    
    • 1
    • 2
    • 3

    写一个类,类名随便

    @Component
    public class SendController {
       
        @Value("${wx.appID}")
        private String appID;
        @Value("${wx.appsecret}")
        private String appsecret;
    
        public void push(){
       
            //1,配置
            WxMpInMemoryConfigStorage wxStorage = new WxMpInMemoryConfigStorage();
            wxStorage.setAppId(appID);
            wxStorage.setSecret(appsecret);
            WxMpService wxMpService = new WxMpServiceImpl();
            wxMpService.setWxMpConfigStorage(wxStorage);
            //2,推送消息
            WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
                    .toUser
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
  • 相关阅读:
    Java设计模式:使用责任链模式和状态模式优化‘审批流程‘
    总结 STM32 常见的一百多个知识点
    异星工场入门笔记-02-一个重要地学习方法
    自己java复习笔记
    JAVA多线程(MultiThread)的各种用法
    这可能是最全的 SpringBoot3 新版本变化了
    让阿里P8都为之着迷的分布式核心原理解析到底讲了啥?看完我惊了
    MySQL8.0 show create view BUG解析
    Node.js精进(3)——流
    充换电企业开迈斯低成本提升线上应用稳定性的最佳实践
  • 原文地址:https://blog.csdn.net/nanci9/article/details/126812502