Heim  >  Artikel  >  WeChat-Applet  >  Benutzerdefiniertes WeChat-Entwicklungsmenü – weixin-java-tools

Benutzerdefiniertes WeChat-Entwicklungsmenü – weixin-java-tools

高洛峰
高洛峰Original
2017-03-08 16:46:101947Durchsuche

1. Vorwort

Im Entwicklungsprozess von WeChat werden wir auf jeden Fall die Verwendung von WeChat-bezogenen Menüs entwerfen. Dieses Mal werde ich Ihnen vorstellen, wie Sie Weixin-Java-Tools zum Verwalten von Menüs verwenden >

2. Benutzerdefinierte Menüklassifizierung

1. Klicken: Klicken Sie auf Push-Ereignis Nachdem der Benutzer auf die Schaltfläche „Klicktyp“ geklickt hat, überträgt der WeChat-Server die Nachrichtentyp-Ereignisstruktur über die Nachrichtenschnittstelle an den Entwickler (siehe zum Nachrichtenschnittstellenhandbuch) und bringen Sie den vom Entwickler eingegebenen Schlüsselwert in die Schaltfläche. Der Entwickler kann mit dem Benutzer über den benutzerdefinierten Schlüsselwert interagieren.

2. Ansicht: Sprung-URL Nachdem der Benutzer geklickt hat Die Ansichtstyp-Schaltfläche WeChat Der Client öffnet die vom Entwickler in die Schaltfläche eingegebene Webseiten-URL, die mit der Webseiten-Autorisierungsschnittstelle kombiniert werden kann, um grundlegende Benutzerinformationen abzurufen, um die grundlegenden Informationen des Benutzers zu erhalten.

3. scancode_push: Nachdem der Benutzer im Scan-Code-Push-Ereignis auf die Schaltfläche geklickt hat, startet der WeChat-Client das Scan-Tool. Nach Abschluss des Scan-Code-Vorgangs wird das Scan-Ergebnis angezeigt (sofern es sich um einen handelt). URL, die URL wird eingegeben) und das Ergebnis des Scans des Codes wird an den Entwickler gesendet, und der Entwickler kann eine Nachricht senden.

4. scancode_waitmsg: Scannen Sie den Code, um das Ereignis zu übertragen und das Eingabeaufforderungsfeld „Nachrichtenempfang“ anzuzeigen. Nachdem der Benutzer auf die Schaltfläche geklickt hat, aktiviert der WeChat-Client das Scan-Tool. Das Ergebnis des Scans lautet: Geben Sie es an den Entwickler weiter, legen Sie gleichzeitig das Scan-Tool weg. Anschließend wird das Eingabeaufforderungsfeld „Nachrichtenempfang“ angezeigt, und Sie erhalten möglicherweise eine Nachricht vom Entwickler.

5. pic_sysphoto: Nachdem der Benutzer auf die Schaltfläche geklickt hat, ruft der WeChat-Client die Systemkamera auf und die aufgenommenen Fotos werden angezeigt an den Entwickler gesendet und das Ereignis wird an den Entwickler weitergeleitet. Gleichzeitig wird die Systemkamera entfernt. Anschließend erhalten Sie möglicherweise eine Nachricht vom Entwickler.

6. pic_photo_or_album: Nachdem der Benutzer auf die Schaltfläche geklickt hat, um ein Foto aufzunehmen oder ein Foto an ein Album zu senden, öffnet der WeChat-Client eine Auswahl, in der der Benutzer „Foto aufnehmen“ oder „Auswählen“ auswählen kann Das Handyalbum". Nachdem der Benutzer ausgewählt hat, durchläuft er die beiden anderen Prozesse.

7. pic_weixin: Nachdem der Absender des WeChat-Fotoalbums angezeigt wird und der Benutzer auf die Schaltfläche klickt, ruft der WeChat-Client das WeChat-Fotoalbum auf. Nach Abschluss des Auswahlvorgangs werden die ausgewählten Fotos an gesendet Wenn Sie auf den Server des Entwicklers klicken und das Ereignis an den Entwickler weitergeleitet wird, schließen Sie gleichzeitig das Fotoalbum und Sie erhalten möglicherweise später eine Nachricht vom Entwickler.

8. location_select: Nachdem der Benutzer auf die Schaltfläche der Popup-Geostandortauswahl geklickt hat, ruft der WeChat-Client das Tool zur Auswahl des geografischen Standorts auf. Nach Abschluss des Auswahlvorgangs wird der ausgewählte geografische Standort gesendet an den Server des Entwicklers gesendet und gleichzeitig gesammelt. Starten Sie das Standortauswahltool. Anschließend erhalten Sie möglicherweise eine Nachricht vom Entwickler.

9. media_id: Senden Sie Nachrichten (außer Textnachrichten). Nachdem der Benutzer auf die Schaltfläche „media_id type“ geklickt hat, sendet der WeChat-Server das Material, das der vom Entwickler eingegebenen permanenten Material-ID entspricht Der permanente Materialtyp kann ein Bild, Audio, Video oder grafische Nachrichten sein. Bitte beachten Sie: Bei der permanenten Material-ID muss es sich um eine gültige ID handeln, die nach dem Hochladen über die Schnittstelle „Materialverwaltung/Permanentes Material hinzufügen“ erhalten wurde.

10. view_limited: Zur Bild- und Textnachrichten-URL springen Nachdem der Benutzer auf die Schaltfläche „view_limited“ geklickt hat, öffnet der WeChat-Client die Bild- und Textnachrichten-URL, die der vom Entwickler eingegebenen permanenten Material-ID entspricht in der Schaltfläche. Der permanente Materialtyp unterstützt nur grafische Nachrichten. Bitte beachten Sie: Bei der permanenten Material-ID muss es sich um eine gültige ID handeln, die nach dem Hochladen über die Schnittstelle „Materialverwaltung/Permanentes Material hinzufügen“ erhalten wurde.

 

Bitte beachten Sie, dass alle Ereignisse von 3 bis 8 nur WeChat iPhone 5.4.1 oder höher unterstützen und WeChat-Benutzer mit älteren Versionen nach dem Klicken nicht antworten . Entwickler können Event-Push nicht normal empfangen. 9 und 10 sind Veranstaltungstypen, die speziell für Abonnementkonten von Drittanbieterplattformen vorbereitet wurden, die nicht von WeChat zertifiziert wurden (insbesondere solche, die die Qualifikationszertifizierung nicht bestanden haben). Sie verfügen nicht über Event-Push und ihre Fähigkeiten sind relativ begrenzt. Andere Arten öffentlicher Konten müssen nicht verwendet werden.

3. Aufrufende Schnittstellenadresse: http Anforderungsmethode: POST (bitte https-Protokoll verwenden)

https://api.weixin.qq.com/ cgi-bin/menu/create?access_token=ACCESS_TOKEN4. Beispiel anfordern

{
     "button":[
     {	
          "type":"click",
          "name":"今日歌曲",
          "key":"V1001_TODAY_MUSIC"
      },
      {
           "name":"菜单",
           "sub_button":[
           {	
               "type":"view",
               "name":"搜索",
               "url":"http://www.soso.com/"
            },
            {
               "type":"view",
               "name":"视频",
               "url":"http://v.qq.com/"
            },
            {
               "type":"click",
               "name":"赞一下我们",
               "key":"V1001_GOOD"
            }]
       }]
 }

Parameterbeschreibung

参数 是否必须 说明
button 一级菜单数组,个数应为1~3个
sub_button 二级菜单数组,个数应为1~5个
type 菜单的响应动作类型
name 菜单标题,不超过16个字节,子菜单不超过40个字节
key click等点击类型必须 菜单KEY值,用于消息接口推送,不超过128字节
url view类型必须 网页链接,用户点击菜单可打开链接,不超过1024字节
media_id media_id类型和view_limited类型必须 调用新增永久素材接口返回的合法media_id

 

 

 

 

 

 

 

 

 

 

 

 

六、代码实现:

  

package com.weixin.menu;

import java.util.ArrayList;
import java.util.List;

import me.chanjar.weixin.common.bean.WxMenu;
import me.chanjar.weixin.common.bean.WxMenu.WxMenuButton;
import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.WxMpServiceImpl;

public class WeixinMenuService {

	public static void main(String[] args) {
		
		//创建菜单
		//创建一级菜单
		WxMenuButton button1=new WxMenuButton();
		button1.setType("click"); //点击事件按钮
		button1.setName("点击菜单");
		button1.setKey("key1"); //根据标志获取点击菜单
		
		//创建一个复合菜单
		WxMenuButton button2=new WxMenuButton();
		button2.setName("多级菜单");
		
		WxMenuButton button2_1=new WxMenuButton();
		button2_1.setType("click"); //点击事件按钮
		button2_1.setName("子菜单一");
		button2_1.setKey("key2"); //根据标志获取点击菜单
		
		WxMenuButton button2_2=new WxMenuButton();
		button2_2.setType("click"); //点击事件按钮
		button2_2.setName("子菜单二");
		button2_2.setKey("key3"); //根据标志获取点击菜单
		
		
		WxMenuButton button3=new WxMenuButton();
		button3.setName("url菜单");
		button3.setType("view");
		button3.setUrl("http://www.baidu.com");  //必须添加http
		
		
		List<WxMenuButton> subButtons=new ArrayList<WxMenuButton>();
		subButtons.add(button2_1);
		subButtons.add(button2_2);
		button2.setSubButtons(subButtons);
		
		List<WxMenuButton> buttons=new ArrayList<WxMenuButton>();
		buttons.add(button1);
		buttons.add(button2);
		buttons.add(button3);
		
		WxMenu menu=new WxMenu();
		menu.setButtons(buttons);
		
		
		//发送请求 创建菜单
		WxMpService service=new WxMpServiceImpl();	
		WxMpInMemoryConfigStorage wxConfigProvider=new WxMpInMemoryConfigStorage();
		wxConfigProvider.setAppId("wx60a8f1c3a95b0b9c");
		wxConfigProvider.setSecret("5b0e8613b538da5ac4bbc610998f10ba");
		service.setWxMpConfigStorage(wxConfigProvider);
		try {
			service.menuCreate(menu);
		} catch (WxErrorException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}


	}

}

七、点击菜单事件推送

  7.1 消息格式

  

<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[FromUser]]></FromUserName>
<CreateTime>123456789</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[CLICK]]></Event>
<EventKey><![CDATA[EVENTKEY]]></EventKey>
</xml>

  

  7.2 参数说明

  

参数 描述
ToUserName 开发者微信号
FromUserName 发送方帐号(一个OpenID)
CreateTime 消息创建时间 (整型)
MsgType 消息类型,event
Event 事件类型,CLICK
EventKey 事件KEY值,与自定义菜单接口中KEY值对应

  

 

 

 

 

 

 

  7.3 消息处理

  在接收消息的post中判断消息类型 并做相关处理。

//获取消息流
		WxMpXmlMessage message=WxMpXmlMessage.fromXml(request.getInputStream());
		
		if(message.getMsgType().equals("event")){ //事件
			
			//判断event
			if(message.getEvent().equals("click") && message.getEventKey().equals("key1")){
				//do something
				
			}
			
			
		}

  

Das obige ist der detaillierte Inhalt vonBenutzerdefiniertes WeChat-Entwicklungsmenü – weixin-java-tools. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn