5行程式碼實現微信小程式模版訊息推送 (含推送後臺和小程式原始碼)
我們在做小程式開發時,訊息推送是不可避免的。今天就來教大家如何實現小程式訊息推送的後臺和前臺開發。原始碼會在文章末尾貼出來。
其實我之前有寫過一篇: 但是有同學反應這篇文章裡的程式碼太繁瑣,接入也比較麻煩。今天就來給大家寫個精簡版的,基本上只需要幾行程式碼,就能實現小程式模版訊息推送功能。
老規矩先看效果圖
這是我們最終推送給使用者的模版訊息。這是使用者手機微信上顯示的推送訊息截圖。
本節知識點
1,java開發推送後臺
2,springboot實現推送功能
3,小程式獲取使用者openid
4,小程式獲取fromid用來推送
先來看後臺推送功能的實現
只有下面一個簡單的PushController類,就可以實現小程式訊息的推送
再來看下PushController類,你沒看錯,實現小程式訊息推送,就需要下面這幾行程式碼就可以實現了。
由於本推送程式碼是用springboot來實現的,下面就來簡單的講下。我我們需要注意的幾點內容。
1,需要在pom.xml引入一個三方類庫(推送的三方類庫)
pom.xml的完整程式碼如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns=""
xmlns:xsi=""
xsi:schemaLocation=" ">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.qcl</groupId>
<artifactId>wxapppush</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>wxapppush</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--微信小程式模版推送-->
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-miniapp</artifactId>
<version>3.4.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
其實到這裡我們java後臺的推送功能,就已經實現了。我們只需要執行springboot專案,就可以實現推送了。
下面貼出完整的PushController.java類。裡面註釋很詳細了。
package com.qcl.wxapppush;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
import cn.binarywang.wx.miniapp.bean.WxMaTemplateData;
import cn.binarywang.wx.miniapp.bean.WxMaTemplateMessage;
import cn.binarywang.wx.miniapp.config.WxMaInMemoryConfig;
import me.chanjar.weixin.common.error.WxErrorException;
/**
* Created by qcl on 2019-05-20
* 微信:2501902696
* desc: 微信小程式模版推送實現
*/
@RestController
public class PushController {
@GetMapping("/push")
public String push(@RequestParam String openid, @RequestParam String formid) {
//1,配置小程式資訊
WxMaInMemoryConfig wxConfig = new WxMaInMemoryConfig();
wxConfig.setAppid("wx7c54942dfc87f4d8");//小程式appid
wxConfig.setSecret("5873a729c365b65ab42bb5fc82d2ed49");//小程式AppSecret
WxMaService wxMaService = new WxMaServiceImpl();
wxMaService.setWxMaConfig(wxConfig);
//2,設定模版資訊(keyword1:型別,keyword2:內容)
List<WxMaTemplateData> templateDataList = new ArrayList<>(2);
WxMaTemplateData data1 = new WxMaTemplateData("keyword1", "獲取老師微信");
WxMaTemplateData data2 = new WxMaTemplateData("keyword2", "2501902696");
templateDataList.add(data1);
templateDataList.add(data2);
//3,設定推送訊息
WxMaTemplateMessage templateMessage = WxMaTemplateMessage.builder()
.toUser(openid)//要推送的使用者openid
.formId(formid)//收集到的formid
.templateId("eDZCu__qIz64Xx19dAoKg0Taf5AAoDmhUHprF6CAd4A")//推送的模版id(在小程式後臺設定)
.data(templateDataList)//模版資訊
.page("pages/index/index")//要跳轉到小程式那個頁面
.build();
//4,發起推送
try { wxMaService.getMsgService().sendTemplateMsg(templateMessage);
} catch (WxErrorException e) {
System.out.println("推送失敗:" + e.getMessage());
return e.getMessage();
}
return "推送成功";
}
}
看程式碼我們可以知道,我們需要做一些配置,需要下面資訊
1,小程式appid
2,小程式AppSecret(密匙)
3,小程式推送模版id
4,使用者的openid
5,使用者的formid(一個formid只能用一次)
下面就是小程式部分,來教大家如何獲取上面所需的5個資訊。
1,appid和AppSecret的獲取(登入小程式管理後臺)
2,推送模版id
3,使用者openid的獲取,可以看下面的這篇文章,也可以看原始碼,這裡不做具體講解
4,獲取formid
看官方文件,可以知道我們的formid有效期是7天,並且一個form_id只能使用一次,所以我們小程式端所需要做的就是儘可能的多拿些formid,然後傳個後臺,讓後臺存到資料庫中,這樣7天有效期內,想怎麼用就怎麼用了。
所以接下來要講的就是小程式開發怎麼儘可能多的拿到formid了
看下官方提供的,只有在表單提交時把report-submit設為true時才能拿到formid,比如這樣
<form report-submit='true' >
<button form-type='submit'>獲取formid</button>
</form>
所以我們就要在這裡下功夫了,既然只能在form元件獲取,我們能不能把我們小程式裡用到最多的地方用form來偽裝呢。
下面簡單寫個獲取formid和openid的完整示例,方便大家學習
效果圖
我們要做的就是點選獲取formid按鈕,可以獲取到使用者的formid和openid,正常我們開發時,是需要把openid和formid傳給後臺的,這裡簡單起見,我們直接用獲取到的formid和openid實現推送功能
下面來看小程式端的實現程式碼
1,index.wxml
2,index.js
到這裡我們小程式端的程式碼也實現了,接下來測試下推送。
formid: 6ee9ce80c1ed4a2f887fccddf87686eb
openid o3DoL0Uusu1URBJK0NJ4jD1LrRe0
可以看到我們用了上面獲取到的openid和formid做了一次推送,顯示推送成功
到這裡我們小程式訊息推送的後臺和小程式端都講完了。
這裡有兩點需要大家注意
1,推送的openid和formid必須對應。
2,一個formid只能用一次,多次使用會報一下錯誤。
{"errcode":41029,"errmsg":"form id used count reach limit hint: [ssun8a09984113]"}
程式設計小石頭,碼農一枚,非著名全棧開發人員。分享自己的一些經驗,學習心得,希望後來人少走彎路,少填坑。
這裡就不單獨貼出原始碼下載連結了,大家感興趣的話,可以私信我,或者在底部留言,我會把原始碼下載連結貼在留言區。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2236/viewspace-2822945/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 小程式訂閱訊息推送(含原始碼)java實現小程式推送,springboo原始碼JavaSpring
- 小程式訊息推送訂閱
- 想要更精準的小程式模版訊息推送?我們來幫你實現
- uni-app小程式訊息推送APP
- 小程式 模版訊息
- 微信小程式模板訊息還能群發?無限制推送?微信小程式
- 微信小程式服務推送微信小程式
- APP訊息推送 極光推送 示例程式碼APP
- 用 Laravel 自帶訊息模組搭建小程式實時推送訊息Laravel
- 訊息推送介面設計(內含原始碼)原始碼
- 你知道如何在小程式中推送模板訊息?
- 微信小程式實現商城案例(賦原始碼)微信小程式原始碼
- 微信小程式商城原始碼微信小程式原始碼
- 微信雲託管 WebSocket 實戰:基於模版實現訊息推送Web
- 從微信小程式開發者工具原始碼看實現原理(二)- - 小程式技術實現微信小程式原始碼
- 微信小程式元件化(下):程式碼實現微信小程式元件化
- 微信小程式掃碼解析小程式碼微信小程式
- 直播小程式原始碼,小程式生成二維碼 (相容H5、微信小程式)原始碼H5微信小程式
- 微信小程式-模組化和模版化微信小程式
- 微信小程式:小程式碼、小程式二維碼、普通二維碼微信小程式
- 乾貨:如何藉助小程式雲開發實現小程式支付功能(含原始碼)原始碼
- 微信小程式實戰影片教程附原始碼課件與多個微信小程式原始碼 14課微信小程式原始碼
- 微信小程式 傳送模板訊息的功能實現微信小程式
- 10行程式碼實現微信小程式支付功能,使用小程式雲開發實現小程式支付功能(行程微信小程式
- 微信小程式+mqtt.js實現實時接收訊息微信小程式MQQTJS
- 從微信小程式開發者工具原始碼看實現原理(一)- - 小程式架構設計微信小程式原始碼架構
- 【微信小程式】掃碼付小程式優化實踐微信小程式優化
- 微信小程式實現全域性搜尋程式碼高亮微信小程式
- 微信小程式模板訊息詳解微信小程式
- iOS APNS推送遠端訊息 java後臺實現iOSJava
- Java微信公眾號推送模版訊息的方法示例Java
- 微信髮卡小程式原始碼 自動髮卡小程式原始碼 帶流量主功能原始碼
- 如何減小微信小程式程式碼包大小微信小程式
- 重磅訊息:微信小程式支援長按二維碼進入微信小程式
- 2107 微信小程式原始碼解析微信小程式原始碼
- 微信小程式開發(十七)模板訊息微信小程式
- 【微信小程式canvas】實現小程式手寫板使用者簽名(附程式碼)微信小程式Canvas
- workerman 實現訊息推送