微信公众号java开发沉淀(五)推送群发消息
權(quán)限
只有認(rèn)證的的訂閱號(hào) 和 服務(wù)號(hào),可以群發(fā)消息。自己申請(qǐng)的測(cè)試號(hào),或者沒(méi)認(rèn)證的訂閱號(hào)、服務(wù)號(hào),沒(méi)有權(quán)限。
樣子
發(fā)出去的文字消息、圖片消息等于普通消息無(wú)差,我就不多說(shuō)了。發(fā)送出去的圖文消息是這樣子的。
者其實(shí)是兩條圖文消息,上面的真好是第一條,下面的Happy Day是第二條。多條的時(shí)候依次在后面增加。
使用fastweixin 的api, 群發(fā)消息
package com.tsing.fast;import com.alibaba.fastjson.JSON; import com.github.sd4324530.fastweixin.api.MessageAPI; import com.github.sd4324530.fastweixin.api.config.ApiConfig; import com.github.sd4324530.fastweixin.api.enums.MediaType; import com.github.sd4324530.fastweixin.api.response.GetSendMessageResponse; import com.github.sd4324530.fastweixin.message.ImageMsg; import com.github.sd4324530.fastweixin.message.MpNewsMsg; import com.github.sd4324530.fastweixin.message.TextMsg; import com.tsing.wechat.utils.HttpUtils; import com.tsing.wechat.utils.ResourceUtils;import java.util.HashMap; import java.util.Map;/*** @author susq* @since 2018-10-24*/ public class MessageService extends BaseService {private static final String DEL_URL = "https://api.weixin.qq.com/cgi-bin/message/mass/delete?access_token=";public static void main(String[] args) {ApiConfig config = new ApiConfig(APP_ID, ENCODING_AES_KEY);MessageAPI messageAPI = new MessageAPI(config);// TextMsg textMsg = getMsg();// ImageMsg imageMsg = getImgMsg(); MpNewsMsg mpNewsMsg = getMaNewMsg();// isToAll 是否發(fā)送給全部用戶(hù)。false時(shí)需要填寫(xiě)tagId,true時(shí)可忽略tagId樹(shù)形GetSendMessageResponse response = messageAPI.sendMessageToUser(mpNewsMsg, true, null);System.out.println("發(fā)送結(jié)果:" + JSON.toJSONString(response));}private static void delSendAll(ApiConfig config) {String param = ResourceUtils.getResourceString(MediaService.class.getResourceAsStream("/del.txt"));String response = HttpUtils.doPost(DEL_URL + config.getAccessToken(), param);System.out.println("發(fā)送結(jié)果:" + JSON.toJSONString(response));}private static MpNewsMsg getMaNewMsg() {MpNewsMsg msg = new MpNewsMsg();msg.setMediaId("2XkN4_oHgQAghifHt5iemp1lOvLsH5pZfNrB8Avat5rAcMzpCnVi0WAMcM8yZFsz");return msg;}private static TextMsg getMsg() {TextMsg textMsg = new TextMsg();textMsg.setContent("群發(fā)消息");textMsg.setMsgType("text");return textMsg;}private static ImageMsg getImgMsg() {ImageMsg imageMsg = new ImageMsg();imageMsg.setMsgType(MediaType.IMAGE.toString());imageMsg.setMediaId("PSUYMe5hdzqT-JrvKg-FEId9iGBj-648kuMLqDQPGr1ffA0yCCF4HxlmFuzrIfAL");return imageMsg;}}需要注意的是:如果發(fā)送的是文本消息,直接寫(xiě)。 如果發(fā)送的是媒體文件,圖片,語(yǔ)音等。需要先通過(guò)素材上傳接口上傳。返回 media_id, 后面發(fā)群發(fā)消息的時(shí)候設(shè)置這個(gè) media_id 到消息中即可。
上傳素材
package com.tsing.fast;import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.github.sd4324530.fastweixin.api.MediaAPI; import com.github.sd4324530.fastweixin.api.config.ApiConfig; import com.github.sd4324530.fastweixin.api.entity.Article; import com.github.sd4324530.fastweixin.api.enums.MediaType; import com.github.sd4324530.fastweixin.api.response.UploadMediaResponse; import com.google.common.collect.Lists; import com.tsing.wechat.utils.ResourceUtils;import java.io.File;/*** @author susq* @since 2018-10-21*/ public class MediaService extends BaseService {public static void main(String[] args) {ApiConfig config = new ApiConfig(APP_ID, ENCODING_AES_KEY);MediaAPI mediaAPI = new MediaAPI(config);// updaloadImg(mediaAPI);uploadNews(mediaAPI);}/*** @param mediaAPI*/private static void updaloadImg(MediaAPI mediaAPI) {File file = new File("E:/title.png");UploadMediaResponse response = mediaAPI.uploadMedia(MediaType.IMAGE, file);System.out.println("上傳結(jié)果:" + JSON.toJSONString(response));}/*** 上傳結(jié)果:{"created_at":1540365524,"media_id":"G03TyVQ14R3nRfyTqItxF4OeFX_t_hniGUGAzWXIjy5VtUaR8ynCMlyt_giabLDW","type":"news"}* @param mediaAPI*/private static void uploadNews(MediaAPI mediaAPI) {String new1 = ResourceUtils.getResourceString(MediaService.class.getResourceAsStream("/new1.txt"));String new2 = ResourceUtils.getResourceString(MediaService.class.getResourceAsStream("/new2.txt"));Article article1 = JSONObject.parseObject(new1, Article.class);Article article2 = JSONObject.parseObject(new2, Article.class);UploadMediaResponse response = mediaAPI.uploadNews(Lists.newArrayList(article1, article2));System.out.println("上傳結(jié)果:" + JSON.toJSONString(response));} }如果發(fā)送的是圖文消息,也需要提前上傳,發(fā)送的是圖文消息的 media_id, 需要注意的是圖文消息的縮略圖,需要提前上傳,獲取到的media_id寫(xiě)入到圖文消息的 thumb_media_id 字段中。
例如文中開(kāi)始的那張圖文消息,原本是這樣的
{"thumb_media_id": "WU0huRZOFJk_ItOiC_AXIyaNszCKaih9yiy6ofDn1F0nRBGL5xjqNQhwsEC6xfUh","author": "蘇少青","title": "真好","content_source_url": "www.qq.com","content": "第一個(gè)圖文消息的內(nèi)容。","digest": "digest","show_cover_pic": 1 } {"thumb_media_id": "WU0huRZOFJk_ItOiC_AXIyaNszCKaih9yiy6ofDn1F0nRBGL5xjqNQhwsEC6xfUh","author": "susq","title": "Happy Day","content_source_url": "blog.csdn.net/u013041642","content": "content","digest": "digest","show_cover_pic": 0 }thumb_media_id 是已經(jīng)上傳好的一張圖片的 media_id, 把這兩條圖文,通過(guò)uploadNews 方法上傳,得到圖文消息的media_id, 再發(fā)送。所有關(guān)注當(dāng)前公眾號(hào)的粉絲。都可以收到了。
最后
詳細(xì)的消息格式文檔里都有 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1481187827_i0l21, 發(fā)送消息的接口,上傳素材等等所喲接口文檔里也都有。對(duì)照f(shuō)astweixin 里面封裝的消息對(duì)象,和API,閱讀效果更佳。 https://gitee.com/pyinjava/fastweixin/
總結(jié)
以上是生活随笔為你收集整理的微信公众号java开发沉淀(五)推送群发消息的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: G1垃圾回收日志分析
- 下一篇: IOS设备恢复模式和DFU模式 区别、进