Heim  >  Artikel  >  WeChat-Applet  >  Detaillierte Einführung in die Erstellung und Löschung benutzerdefinierter Menüs bei der Entwicklung öffentlicher WeChat-Plattformen

Detaillierte Einführung in die Erstellung und Löschung benutzerdefinierter Menüs bei der Entwicklung öffentlicher WeChat-Plattformen

高洛峰
高洛峰Original
2017-03-22 16:45:313311Durchsuche

Beim Erstellen von Menüs werden Daten auf Basis von JSON übertragen. Laden Sie daher das entsprechende Paket herunter. Klicken Sie hier, um es herunterzuladen:

Das Dokument zur Entwicklung der öffentlichen Plattform enthält Anweisungen:

Bitte beachten Sie :

1. Das benutzerdefinierte Menü kann bis zu 3 Menüs der ersten Ebene enthalten, und jedes Menü der ersten Ebene kann bis zu 5 Menüs der zweiten Ebene enthalten.
2. Das Menü der ersten Ebene kann bis zu 4 chinesische Zeichen enthalten, und das Menü der zweiten Ebene kann bis zu 7 chinesische Zeichen enthalten. Die zusätzlichen Teile werden durch „…“ ersetzt.
3. Nach dem Erstellen eines benutzerdefinierten Menüs dauert es aufgrund der Zwischenspeicherung des WeChat-Clients 24 Stunden, bis es angezeigt wird. Beim Testen können Sie versuchen, dem öffentlichen Konto nicht mehr zu folgen und ihm erneut zu folgen, und Sie können die Auswirkung nach der Erstellung sehen.

Die benutzerdefinierte Menüoberfläche kann mehrere Arten von Schaltflächen implementieren, wie folgt:

1 Klicken: Klicken Sie auf Push-Ereignis Nachdem der Benutzer auf die Schaltfläche „Klicktyp“ geklickt hat, führt der WeChat-Server einen Push aus Eine Nachricht über die Nachrichtenschnittstelle Eine Struktur vom Typ Ereignis
wird Entwicklern bereitgestellt (siehe Handbuch zur Nachrichtenschnittstelle), wobei der Schlüsselwert vom Entwickler in die Schaltfläche eingegeben wird. Entwickler können mit Benutzern interagieren, indem sie den Schlüsselwert anpassen von
;
2. Ansicht: Sprung-URL Nachdem der Benutzer auf die Schaltfläche „Ansichtstyp“ geklickt hat, öffnet der WeChat-Client die vom Entwickler in die Schaltfläche „
“ eingegebene Webseiten-URL Website-Autorisierungsschnittstelle, um die grundlegenden Informationen des Benutzers zu erhalten, 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
(falls es ein URL, es wird die URL eingegeben) und Das Ergebnis des Scannens des QR-Codes wird an den Entwickler gesendet, der Nachrichten senden kann.
4. scancode_waitmsg: Scannen Sie den Code, um das Ereignis zu übertragen, und öffnen Sie das Eingabeaufforderungsfeld „Nachricht empfangen“. Nachdem der Benutzer auf die Schaltfläche geklickt hat, ruft der WeChat-Client nach dem Code-Scanvorgang das Scan-Tool auf Ist der Vorgang abgeschlossen, wird das Ergebnis des Scan-Codes angezeigt. Geben Sie ihn an den Entwickler weiter, legen Sie gleichzeitig das Scan-Tool weg, und dann wird das Eingabeaufforderungsfeld „Nachricht
Empfangen“ angezeigt, und Sie erhalten möglicherweise eine Nachricht vom Entwickler.
5. pic_sysphoto: Nachdem das System zum Aufnehmen von Fotos und zum Senden von Bildern geöffnet wurde, ruft der WeChat-Client die Systemkamera auf. Nach Abschluss des Fotovorgangs sendet
die aufgenommenen Fotos an den Entwickler senden und das Ereignis an den Entwickler weiterleiten und gleichzeitig die Systemkamera weglegen, und dann 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 gleichzeitig das Fotoalbum schließen, erhalten Sie möglicherweise später eine Nachricht vom
-Absender.
8. location_select: Nachdem der Benutzer auf die Schaltfläche der Popup-Standortauswahl geklickt hat, ruft der WeChat-Client das Standortauswahltool auf. Nach Abschluss des Auswahlvorgangs wird der ausgewählte geografische Standort gesendet Verstecken Sie gleichzeitig den Speicherort und wählen Sie das Tool
aus. Möglicherweise erhalten Sie dann eine Nachricht vom Entwickler.
9. media_id: Nachdem der Benutzer auf die Schaltfläche
media_id type geklickt hat, um eine Nachricht (außer Textnachricht) zu senden, übermittelt der WeChat-Server dem Benutzer das Material, das der vom Entwickler eingegebenen permanenten Material-ID entspricht. Der permanente Materialtyp
Der Typ kann Bilder, Audio, Video, grafische Nachrichten sein. Bitte beachten Sie: Die permanente Material-ID muss eine gültige ID sein, die nach dem Hochladen über die Schnittstelle „Materialverwaltung/Permanentmaterial hinzufügen“
erhalten wurde. 10. view_limited: Springen Sie zur Bild- und Textnachrichten-URL. Nachdem der Benutzer auf die Schaltfläche „view_limited“ geklickt hat, öffnet der WeChat-Client die Bild- und Textnachrichten-URL, die der vom Entwickler in der Schaltfläche eingegebenen permanenten Material-ID entspricht . Der permanente Materialtyp unterstützt nur Bilder und Text
Nachricht. 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 und Android 5.4 oder höher WeChat-Benutzer unterstützen. Nach dem Klicken auf die alte Version von WeChat erfolgt keine Antwort. Entwickler-Event-Push kann nicht normal empfangen werden. 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.

1. Da das benutzerdefinierte Menü die HTTP-Anfragemethode verwendet, muss das https-Protokoll verwendet werden. Schreiben Sie eine Methodenklasse, um https- und JSON-Daten zu verarbeiten.

Erstellen Sie eine neue Klasse unter dem Paket com.cc.wechat.util:

---CommonUtil.java:

2. Definieren Sie verschiedene Arten von Schaltflächen , Extrahieren Sie allgemeine Variablen und schreiben Sie sie in eine Klasse.

Erstellen Sie verwandte Klassen unter dem Paket com.cc.wechat.menu:
package com.cc.wechat.util;
 
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.URL;
 
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
 
/**
 * 公众平台通用接口工具类
 * @author ICHN
 * 2015-09-04
 */
public class CommonUtil {
 
    /**
     * 发起https请求并获取结果
     * @param requestUrl 请求地址
     * @param requestMethod 请求方式(GET、POST)
     * @param outputStr  提交的数据
     * @return JSONObject(通过JSONObject.get(key)的方式获取json对象的属性值)
     */
    public static String httpsRequest(String requestUrl, String requestMethod, String outputStr) {
         
        StringBuffer sb = new StringBuffer();
         
        // 创建SSLContext对象,并使用我们指定的信任管理器初始化
        TrustManager[] tm = {new MyX509TrustManager()};
         
        try {
            SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
            sslContext.init(null, tm, new java.security.SecureRandom());
             
            // 从上述SSLContext对象中得到SSLSocketFactory对象
            SSLSocketFactory ssf = sslContext.getSocketFactory();
             
            URL url = new URL(requestUrl);
            HttpsURLConnection httpsUrlConnection = (HttpsURLConnection)url.openConnection();
            httpsUrlConnection.setSSLSocketFactory(ssf);
            httpsUrlConnection.setDoInput(true);
            httpsUrlConnection.setDoOutput(true);
            httpsUrlConnection.setUseCaches(false);
            // 设置请求方式(GET/POST)
            httpsUrlConnection.setRequestMethod(requestMethod);
             
            //对请求方式进行判断 equalsIgnoreCase不区分大小写
            if("GET".equalsIgnoreCase(requestMethod)) {
                //建立连接
                httpsUrlConnection.connect();
            }
             
            //当有数据需要提交时
            if(null != outputStr) {
                OutputStream os = httpsUrlConnection.getOutputStream();
                // 注意编码格式,防止中文乱码
                os.write(outputStr.getBytes("UTF-8"));
                os.close();
            }
             
            //将返回的输入流转换成字符串
            InputStream is = httpsUrlConnection.getInputStream();
            InputStreamReader isr = new InputStreamReader(is, "UTF-8");
            BufferedReader br = new BufferedReader(isr);
             
            String strLine = null;
             
            while((strLine = br.readLine()) != null) {
                sb.append(strLine);
            }
             
            br.close();
            isr.close();
             
            //释放资源
            is.close();
            is = null;
             
        } catch (Exception e) {
            e.printStackTrace();
        }
         
        return sb.toString();
    }
}

1 ---Button.java:

2 ---ClickButton java:

package com.cc.wechat.menu;
 
/**
 * 菜单按钮
 * @author ICHN
 */
public class Button {
 
    //菜单标题,不超过16个字节,子菜单不超过40个字节
    private String name;
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
}
3 ---ComplexButton.java:

package com.cc.wechat.menu;
 
/**
 * click类型按钮
 * @author ICHN
 *
 */
public class ClickButton extends Button{
 
    //菜单的响应动作类型 
    private String type;
    //菜单KEY值,用于消息接口推送,不超过128字节 
    private String key;
     
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String getKey() {
        return key;
    }
    public void setKey(String key) {
        this.key = key;
    }
}
4 ---Menu.java:

package com.cc.wechat.menu;
 
/**
 * 二级菜单数组
 * 个数应为1~5个
 * @author ICHN
 *
 */
public class ComplexButton extends Button {
 
    //二级菜单数组
    private Button[] sub_button;
 
    public Button[] getSub_button() {
        return sub_button;
    }
 
    public void setSub_button(Button[] sub_button) {
        this.sub_button = sub_button;
    }
}
5 ---ViewButton .java :

package com.cc.wechat.menu;
 
/**
 * 菜单
 * @author ICHN
 *
 */
public class Menu {
 
    private Button[] button;
 
    public Button[] getButton() {
        return button;
    }
 
    public void setButton(Button[] button) {
        this.button = button;
    }
}
3. Erstellen Sie einen neuen Testquellenordner test, erstellen Sie darin ein Paket com.cc.wechat.test und schreiben Sie die zugehörigen Klassen zum Erstellen von Menüs in dieses Paket.

Schreiben Sie eine Klasse, um access_token zu erhalten:
package com.cc.wechat.menu;
 
/**
 * view类型按钮
 * @author ICHN
 *
 */
public class ViewButton extends Button {
 
    //菜单的响应动作类型 
    private String type;
    //网页链接,用户点击菜单可打开链接,不超过256字节
    private String url;
     
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
}

---GetAccessToken.java:


2. Menüs erstellen und löschen:

---MenuTest.java:
package com.cc.wechat.test;
 
import com.cc.wechat.util.CommonUtil;
 
/**
 * 获取access_token
 * @author ICHN
 * 测试账号的appID和appsecret
 * 
 * access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。
 * 开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。
 * access_token的有效期目前为2个小时,需定时刷新,
 * 重复获取将导致上次获取的access_token失效
 */
public class GetAccessToken {
 
    public static void main(String[] args) {
         
        //打印出access_token
        System.out.println(CommonUtil.httpsRequest(
        "&secret=此处填写appsecret", 
        "GET",
         null
         )
        );
    }
}

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die Erstellung und Löschung benutzerdefinierter Menüs bei der Entwicklung öffentlicher WeChat-Plattformen. 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