微信小程序推送功能最新版本(推送到服務通(tōng)知java+微信小程序代碼塊) - 新聞資(zī)訊 - 雲南小程序開發|雲南軟件開發|雲南網站(zhàn)建設-西山區知普網絡科技工作室

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不管是網站(zhàn),軟件還是小程序,都要直接或間接能為您産生價值,我們在追求其視覺表現的同時,更側重于功能的便捷,營銷的便利,運營的高效,讓網站(zhàn)成為營銷工具,讓軟件能切實提升企業(yè)内部管理水平和(hé)效率。優秀的程序為後期升級提供便捷的支持!

微信小程序推送功能最新版本(推送到服務通(tōng)知java+微信小程序代碼塊)

發表時間:2020-9-29

發布人:葵宇科技

浏覽次數:220

     微信小程序的消息推送簡單的說就是發送一條微信通(tōng)知給用戶,用戶點開消息可(kě)以查看消息内容,可(kě)以鍊接進入到小程序的指定頁面。

一、準備工作
首先,在微信公衆平台開通(tōng)消息推送功能,并添加消息模闆。可(kě)以從模闆庫選擇模闆也可(kě)以創建一個(gè)模闆,模闆添加之後,模闆ID我們接下(xià)來要用的。
在這裡插入圖片描述
然後拿到小程序的APPID和(hé)秘鑰 在這裡插入圖片描述
二~打開微信開發工具
加一個(gè)按鈕就可(kě)以,用這個(gè)按鈕去觸發這個(gè)函數方法

,//記得添加逗号哦。
  sendDYMsg: function(e) {
    wx.requestSubscribeMessage({
      tmplIds: ['ooaZWfK6liHpqDAcnR2hgObdQuh2JqQP2Z_UR6vvraU'],
      success(res) {
        console.log("可(kě)以給用戶推送一條中(zhōng)獎通(tōng)知了。。。");
      }
    })
  }

tmplIds是你(nǐ)小程序的模闆id,觸發這個(gè)函數會彈出下(xià)面的方框
在這裡插入圖片描述
三、服務端(java)代碼開發:
1、老規矩先查看官網騰訊api文(wén)檔:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/subscribe-message/subscribeMessage.send.html

在這裡插入圖片描述
2、給大家介紹一個(gè)關(guān)于微信開發的工具類(個(gè)人感覺非常優秀,可(kě)以自己去看看。):

git地址:https://github.com/Wechat-Group/WxJava

小程序文(wén)檔地址:http://binary.ac.cn/weixin-java-miniapp-javadoc/

3.集成pom文(wén)件:

 <!-- 小程序開發包-->
        <dependency>
            <groupId>com.github.binarywang</groupId>
            <artifactId>weixin-java-miniapp</artifactId>
            <version>3.6.0</version>
        </dependency>
 
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
 
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>4.1.21</version>
        </dependency>

4.根據code獲取openid:
code:(重點)隻能使用一次,并且隻有5分鐘有效期
在這裡插入圖片描述

/*
獲取openid
 */

    private static  String getOpenid(String code){
        //臨時登錄憑證
        String URL = "https://api.weixin.qq.com/sns/jscode2session?appid="+APPID1+"&secret="+AppSecret1+"&js_code="+code+"&grant_type=authorization_code";
        String openId=interfaceUtil(URL, "");
        return openId;
    };

這個(gè)openid必須是小程序的openid其他的openid不可(kě)以
5.最終環節進行小程序訂閱消息推送

訂閱消息傳參和(hé)模闆消息是不一樣的,需要根據人家規則進行填寫,加了正則校(xiào)驗了
在這裡插入圖片描述
在這裡插入圖片描述
推送代碼

 /**
     * 微信小程序推送訂閱消息
     * create By KingYiFan>@GetMapping(value = "/messagePush")
    @ResponseBody
    public Object sendDYTemplateMessage(String openId) throws Exception {

        System.err.println("openId:"+openId);
        wxsmallTemplate tem = new wxsmallTemplate();
        //跳轉小程序頁面路(lù)徑
        tem.setPage("pages/index/index");
        //模闆消息id
        tem.setTemplate_id("-UBAuupYlK2RAbxYvhk6UvK48ujQD72RpEOdkF-sJ2s");
        //給誰推送 用戶的openid (可(kě)以調用根據code換openid接口)
        tem.setToUser(openId);
        //==========================================創建一個(gè)參數集合========================================================

        List<wxsmallTemplateParam> paras = new ArrayList<wxsmallTemplateParam>();
        //這個(gè)是滿參構造 keyword1代表的第一個(gè)提示  紅包已到賬這是提示 #DC143C這是色值不過廢棄了
      wxsmallTemplateParam templateParam = new wxsmallTemplateParam(
                "thing2", "紅包已到賬", "#DC143C");

        paras.add(templateParam);
        paras.add(new wxsmallTemplateParam("phrase3", "劉骞", ""));
        tem.setData(paras);
        //模闆需要放大的關(guān)鍵詞,不填則默認無放大
        tem.setToken(getAccessToken());
        //=========================================封裝參數集合完畢========================================================
        try {
            //進行推送
            //獲取微信小程序配置:
            if(sendTemplateMsg1(getAccess_token(APPID1,AppSecret1), tem)){
                return "推送成功";
            }else{
                JSONObject jsonObject = new JSONObject();   //返回JSON格式數據
                jsonObject.put("buTie",tem);
                return jsonObject;
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        return "推送失敗";
    }

    public static boolean sendTemplateMsg1(String token,wxsmallTemplate template) {
        System.err.println("token:"+token);
        boolean flag = false;

        String requestUrl = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN";
//        String requestUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN";

        requestUrl = requestUrl.replace("ACCESS_TOKEN", token);
        JSONObject jsonResult =JSON.parseObject(post(JSON.parseObject(template.toJSON()) ,requestUrl)) ;
        if (jsonResult != null) {
            Integer errorCode = jsonResult.getInteger("errcode");
            String errorMessage = jsonResult.getString("errmsg");
            if (errorCode == 0) {
                flag = true;
            } else {
                System.out.println("模闆消息發送失敗:" + errorCode + "," + errorMessage);
                flag = false;
            }
        }
        return flag;
    }

    public String getAccess_token(String appid, String appsecret) {
        String url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appid+"&secret="+appsecret;
//                      https://api.weixin.qq.com/cgi-bin/token.
        JSONObject jsonObject = doGet1(url);
        System.out.println(jsonObject.toString());
        String errCode = jsonObject.getString("expires_in");
        if (!StringUtils.isEmpty(errCode)  && !StringUtils.isEmpty(jsonObject.getString("access_token").toString())) {
            String token = jsonObject.get("access_token").toString();
            return token;
        } else {
            return null;
        }
    }

    public static JSONObject doGet1(String url) {
        CloseableHttpClient client = HttpClients.createDefault();
        HttpGet httpGet = new HttpGet(url);
        JSONObject jsonObject = null;
        try {
            HttpResponse httpResponse = client.execute(httpGet);
            HttpEntity entity = httpResponse.getEntity();
            if (entity != null) {
                String result = EntityUtils.toString(entity, "UTF-8");
                jsonObject = JSONObject.parseObject(result);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                //        釋放連接
                httpGet.releaseConnection();
                client.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return jsonObject;
    }
    //post請求
public static String post(JSONObject json,String URL) {

        HttpClient client = new DefaultHttpClient();
        HttpPost post = new HttpPost(URL);
        post.setHeader("Content-Type", "application/json");
        post.addHeader("Authorization", "Basic YWRtaW46");
        String result = "";

        try {

            StringEntity s = new StringEntity(json.toString(), "utf-8");
            s.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,
                    "application/json"));
            post.setEntity(s);

            // 發送請求
            HttpResponse httpResponse = client.execute(post);

            // 獲取響應輸入流
            InputStream inStream = httpResponse.getEntity().getContent();
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    inStream, "utf-8"));
            StringBuilder strber = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null)
                strber.append(line + "\n");
            inStream.close();

            result = strber.toString();
            System.out.println(result);

            if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                System.out.println("請求服務器(qì)成功,做相應處理");
            } else {
                System.out.println("請求服務端失敗");
            }
        } catch (Exception e) {
            System.out.println("請求異常");
            throw new RuntimeException(e);
        }

        return result;
    }

在這裡插入圖片描述
到現在微信小程序訂閱消息推送就到此結束了,是不是超級簡單那種。

給大家分享一個(gè),隻給用戶提示一次,下(xià)次就不用提示就可(kě)以一直發送通(tōng)知的方案: 微信設置了總是保持以上選擇,不在詢問(wèn)按鈕,隻要把這對勾給點擊上。下(xià)次點擊通(tōng)知函數,就不會給用戶提示哦。 我給點擊了按鈕,到現在我都沒找到從哪能開啟這個(gè)提示。

在這裡插入圖片描述

相關(guān)案例查看更多