1. Kustomisasi deskripsi menu dan jenis tombol
1. Deskripsi Menu
1) Menu khusus termasuk hingga 3 menu tingkat pertama, dan setiap menu tingkat pertama berisi hingga 5 menu tingkat kedua.
2) Menu tingkat pertama memiliki hingga 4 karakter Cina, dan menu tingkat kedua memiliki hingga 7 karakter Cina. Bagian tambahan akan diganti dengan "...".
3) Setelah membuat menu khusus, strategi penyegaran menu adalah bahwa ketika pengguna memasuki halaman sesi akun resmi atau halaman profil akun resmi, jika ia menemukan bahwa permintaan terakhir untuk menarik menu adalah 5 menit yang lalu, ia akan menarik menu. Jika menu diperbarui, menu klien akan disegarkan. Selama tes, Anda dapat mencoba untuk berhenti mengikuti akun publik dan mengikutinya lagi, dan Anda dapat melihat efeknya setelah pembuatan.
2. Antarmuka Menu Kustom dapat menerapkan beberapa jenis tombol
1) Klik: Setelah pengguna mengklik tombol Klik Jenis saat mengklik acara PUSH, server WeChat akan mendorong struktur acara jenis pesan ke pengembang melalui antarmuka pesan (lihat Panduan Antarmuka Pesan), dan bawa nilai kunci yang diisi oleh pengembang di tombol. Pengembang dapat berinteraksi dengan pengguna melalui nilai kunci yang disesuaikan;
2) Lihat: Lompat URL Setelah pengguna mengklik tombol Tampilan Tampilan, klien WeChat akan membuka URL halaman web yang diisi oleh pengembang di tombol, yang dapat dikombinasikan dengan otorisasi halaman web untuk mendapatkan antarmuka informasi dasar pengguna untuk mendapatkan informasi dasar pengguna.
3) Scancode_push: Setelah pengguna mengklik tombol untuk acara Pusat kode pemindaian, klien WeChat akan memanggil alat pemindaian, dan menampilkan hasil pemindaian setelah menyelesaikan operasi kode pemindaian (jika itu adalah URL, ia akan memasukkan URL), dan hasil pemindaian akan diteruskan ke pengembang, dan pengembang dapat mengirim pesan.
4) Scancode_waitmsg: Pindai kode untuk mendorong acara dan kotak prompt "pesan terima" muncul. Setelah pengguna mengklik tombol, klien WeChat akan memanggil alat pemindaian. Setelah menyelesaikan operasi pemindaian, hasil kode pemindaian diteruskan ke pengembang. Pada saat yang sama, alat pemindaian ditutup, dan kotak prompt "pesan menerima" muncul, dan kemudian pesan yang dikirim oleh pengembang dapat diterima.
5) PIC_SYSPHOTO: Setelah pengguna mengklik tombol, klien WeChat akan menyesuaikan kamera sistem. Setelah menyelesaikan operasi foto, foto yang diambil akan dikirim ke pengembang dan mendorong acara ke pengembang. Pada saat yang sama, kamera sistem akan ditutup, dan pesan yang dikirim oleh pengembang dapat diterima.
6) PIC_PHOTO_OR_ALBUM: Setelah pengguna mengklik tombol, klien WeChat akan memunculkan pemilih untuk pengguna untuk memilih "mengambil foto" atau "Pilih dari album ponsel". Setelah pengguna memilih, ia akan melalui dua proses lainnya.
7) PIC_WEIXIN: Setelah pengguna mengklik tombol pada pengirim album foto WeChat, klien WeChat akan menyesuaikan album foto WeChat. Setelah menyelesaikan operasi pemilihan, foto yang dipilih akan dikirim ke server pengembang dan mendorong acara ke pengembang. Pada saat yang sama, album ini akan ditutup. Kemudian, pesan yang dikirim oleh pengembang dapat diterima.
8) Lokasi_Select: Setelah pengguna mengklik tombol ketika pengguna mengklik tombol, klien WeChat akan memanggil alat pemilihan geolokasi. Setelah menyelesaikan operasi pemilihan, lokasi geografis yang dipilih akan dikirim ke server pengembang, dan alat pemilihan lokasi akan ditutup. Kemudian, pesan yang dikirim oleh pengembang dapat diterima.
9) Media_id: Setelah pengguna mengklik tombol Tipe Media_ID, server WeChat akan mengirim materi yang sesuai dengan ID materi permanen yang diisi oleh pengembang kepada pengguna. Jenis materi permanen dapat berupa pesan gambar, audio, video, dan grafik. Harap dicatat: ID materi permanen harus berupa ID hukum yang diperoleh setelah mengunggah antarmuka "Manajemen Bahan/Tambahkan Bahan Permanen".
10) View_limited: Lompat URL Pesan Grafis Setelah pengguna mengklik tombol Tipe View_limited, klien WeChat akan membuka URL pesan grafis yang sesuai dengan ID materi permanen yang diisi oleh pengembang dalam tombol. Jenis bahan permanen hanya mendukung pesan grafis. Harap dicatat: ID materi permanen harus berupa ID hukum yang diperoleh setelah mengunggah antarmuka "Manajemen Bahan/Tambahkan Bahan Permanen".
Catatan: Semua acara dari 3 hingga 8 hanya mendukung pengguna WeChat iPhone 5.4.1 atau di atas, dan Android 5.4 atau lebih. Pengguna versi lama WeChat tidak akan merespons setelah mengklik, dan pengembang tidak dapat menerima dorongan acara secara normal. 9 dan 10 adalah jenis acara yang disiapkan khusus untuk akun berlangganan di bawah platform pihak ketiga yang belum disertifikasi oleh WeChat (khususnya, mereka tidak disetujui oleh sertifikasi kualifikasi). Mereka tidak memiliki dorongan acara dan kemampuan mereka relatif terbatas. Jenis akun publik lainnya tidak perlu digunakan.
2. Buat/permintaan/hapus menu
Klik Resmi dan Lihat Demo Acara
{"Tombol": [{"type": "klik", "name": "lagu hari ini", "kunci": "v1001_today_music"}, {"name": "menu", "sub_button", {{"type": "view", "name": "Search", "Url": "http:" {{{{{{{{{{{" "type": "miniprogram", "name": "wxa", "url": "http://mp.weixin.qq.com", "appid": "wx286b93c14bbf93aa", "Klik," "Key": "v1001_good"}]}]}Jenis lain (termasuk 9 dan 10)
{"Tombol": [{"name": "scancode_waitmsg", "name": "scancode dengan prompt", "key": "selfmenu_0_0", "sub_button": []}, {"type": "scancode_push", "nama": "SCANCODE_PUSH", "SCANCODE_PUSH", "SCANCODE_PUSH": "SCANCODE": "SCANCODE", "SCANCODE": "SCANCODE": "SCANCODE": "SCANCODE": "SCANCODE": "SCANCODE", " "SelfMenu_0_1", "Sub_Button": []}]}, {"name": "Kirim gambar", "Sub_button": [{"type": "pic_sysphoto", "name": "Foto sistem dan gambar postingan", "kunci": "selfMenu_1_0", "", "", "", "", "", "", " "pic_photo_or_album", "name": "Ambil foto atau album untuk memposting gambar", "kunci": "selfmenu_1_1", "sub_button": []}, {"type": "pic_weixin", "name": "Foto album weChat dan gambar postingan", "Key": "}}}}}}}}}} {} {} {} {{} {{} {{} {{{} {{{} {{{{{{pice," {"Name": "Send Location", "Type": "Location_Select", "Key": "Selfmenu_2_0"}, {"Type": "Media_id", "Name": "Picture", "Media_id": "Media_id1"}, "Tipe": "View_Limited", "Name": "{" Media ":" Media ":" Media ":" Media ":" Media ":" Media ":" "1. Mulai merangkum kelas entitas sesuai dengan contoh
Tombol Menu Dasar Kelas BasicButton.java
Public Class BasicButton {Private String Name; public string getName () {return name; } public void setName (name string) {this.name = name; }} Menu.java
menu kelas publik {string statis akhir publik klik = "klik"; // klik menu public final static string view = "view"; // menu url public final static string scancode_waitmsg = "scancode_waitmsg"; // Pindai kode dengan string statis final publik prompt scancode_push = "scancode_push"; // Pindai kode untuk mendorong acara public final static string pic_sysphoto = "pic_sysphoto"; // sistem untuk mengambil foto dan memposting string statis final publik pic_photo_or_album = "pic_photo_or_album"; // Ambil foto atau posting album foto public final static string pic_weixin = "pic_weixin"; // Posting foto di WeChat public final static string location_select = "location_select"; // Kirim Lokasi Private BasicButton [] Tombol; public basicbutton [] getButton () {tombol kembali; } public void setButton (tombol BASICBUTTON []) {this.button = tombol; }} Lihat Jenis Kelas Tombol ViewButton.java. Jenis lain dapat dikemas satu per satu menurut ini.
Public Class ViewButton memperluas BASICBUTTON {private string type = menu.view; URL string pribadi; string publik getType () {type return; } public void setType (string type) {this.type = type; } public String getUrl () {return url; } public void setUrl (string url) {this.url = url; }}Menu tingkat pertama berisi enkapsulasi menu tingkat kedua ComplexMenu.java
ComplexMenu kelas publik memperluas BASICBUTTON {private BASICBUTTON [] Sub_Button; public basicbutton [] getSub_button () {return sub_button; } public void setSub_button (BASICBUTTON [] Sub_button) {this.sub_button = sub_button; }}2. Kemasan lengkap, rakit menu
Private Static Menu getMenu () {viewButton btn11 = viewbutton baru (); btn11.setname ("tes 11"); btn11.setUrl ("http://www.qq.com"); Clickbutton btn21 = clickbutton baru (); btn21.setname ("tes 21"); btn21.setKey ("21"); Clickbutton btn22 = clickbutton baru (); btn22.setname ("tes 22"); btn22.setkey ("22"); // Menu Level 1 (Tidak Ada Menu Sekunder) ComplexMenu MainBtn1 = ComplexMenu baru (); mainbtn1.setname ("tes 1"); mainbtn1.setsub_button (basicbutton baru [] {btn11}); // menu level 1 (dengan menu sekunder) complexMenu mainbtn2 = complexMenu baru (); mainbtn2.setname ("tes 2"); mainbtn2.setsub_button (basicbutton baru [] {btn21, btn22}); Menu menu = menu baru (); menu.setButton (BASICBUTTON baru [] {MainBtn1, MainBtn2}); Return Menu; }3. Penciptaan Menu Kustom
/ ** * Menu dibuat * * @param menu item menu * @param token token otorisasi * @return {"errcode": 0, "errmsg": "ok"} */ public resultState createMenu (menu menu, string token) {treemap <string, string> peta = new treemap <string, string> (); peta.put ("access_token", token); String jsondata = jsonutil.toJson (menu) .toString (); String result = httprequtil.httpsdefaultexecute (httprequtil.post_method, wechatconfig.menu_create_url, peta, jsondata); return jsonutil.fromjson (hasil, resultState.class); }4. Kueri Menu Kustom
Contoh yang dikembalikan
Sesuai untuk membuat antarmuka, JSON yang benar mengembalikan hasilnya:
{"menu": {"tombol": [{"type": "klik", "name": "lagu hari ini", "key": "v1001_today_music", "sub_button": []}, {"}": "Klik", "nama": "Profil penyanyi", "Key": "V1001:" V1001, "Name": "Subutton", "Key": "V1001," V1001, "Klik": " "name": "menu", "sub_button": [ { "type": "view", "name": "search", "url": "http://www.soso.com/", "sub_button": [ ] }, { "type": "view", "name": "video", "url": "http://v.qq.com/", "Sub_button": []}, {"type": "klik", "name": "like us", "key": "v1001_good", "sub_button": []}]}]}} / ** * Dapatkan menu kustom * * @param token * @return */ public string getMenu (string token) {treemap <string, string> map = new treemap <string, string> (); peta.put ("access_token", token); String result = httprequtil.httpsdefaultexecute (httprequtil.get_method, wechatconfig.menu_get_url, peta, ""); hasil pengembalian; }Menuattr.java
/ ** * Semua properti menu * @author phil * */ kelas publik menuAttr memperluas BasicMenu {private string type; URL string pribadi; kunci string pribadi; Private String Sub_Button; Get/Set Metode} Kelas menu yang dikembalikan Menureturn.java
/ ** * Kelas menu yang dikembalikan * @author Phil * */ kelas publik menureturn memperluas dasarMenu {private menuAttr [] sub_button; menuAttr publik [] getSub_button () {return sub_button; } public void setSub_button (menuAttr [] subbutton) {sub_button = subbutton; }}Konversi string yang diformat JSON ke objek menu
/ ** * Konversi string dalam format JSON ke objek menu * @param json * @return */ Daftar publik <SureReturn> convertMenu (string json) {list <merureturn> list = new ArrayList <SureTurn> (); if (json! = Null &&! " Jsonarray array = object.getjsonObject ("menu"). Getjsonarray ("tombol"); untuk (int i = 0; i <array.size (); i ++) {menureturn mr = new menureturn (); mr = array.getObject (i, menureturn.class); list.add (MR); }} daftar pengembalian; }Catatan: Fastjson digunakan di sini
Berikut adalah metode yang perlu ditingkatkan. Tolong beri saya beberapa saran jika Anda memiliki yang lebih baik
5. Hapus Menu Kustom
/ ** * Hapus menu khusus * * @param token * @return */ public boolean deleteMenu (string token) {boolean falg = true; Treemap <string, string> map = new treemap <string, string> (); peta.put ("access_token", token); String result = httprequtil.httpsdefaultexecute (httprequtil.get_method, wechatconfig.menu_delte_url, peta, ""); State resultState = jsonutil.fromjson (hasil, resultState.class); if (state.geterRcode ()! = 0 || state.geterrmsg ()! = "ok") {false = false; } return false; }3. Dorong Acara Menu Kustom
Setelah pengguna mengklik menu khusus, WeChat akan mendorong acara klik ke pengembang. Harap dicatat bahwa menu klik muncul di submenu dan tidak akan menghasilkan laporan. Harap dicatat bahwa semua acara dari yang ketiga hingga kedelapan hanya mendukung pengguna WeChat dari iPhone 5.4.1 atau di atas, dan Android 5.4 atau lebih tinggi. Pengguna versi lama WeChat tidak akan merespons setelah mengklik, dan pengembang tidak dapat menerima dorongan acara secara normal.
1. Menganalisis paket data XML yang didorong oleh WeChat
/*** Parsing Permintaan dari WeChat (XML)* Contoh XML* <xml> <Tousername> <! <msgtype> <! [Cdata [event]]> </sgtype> <devent> <! [Cdata [klik]]> </devent> <deventkey> <! // Simpan hasil parsed di peta hashmap <string, string> peta = new HashMap <string, string> (); // Dapatkan aliran input dari inputStream inputStream = request.getInputStream (); // Baca input stream Saxreader Reader = SaxReader baru (); Dokumen dokumen = reader.read (inputStream); // Dapatkan elemen elemen root XML root = document.getrooteLement (); // Dapatkan semua node anak dari daftar elemen root <sement> elementList = root.elements (); // traverse semua node anak untuk (elemen e: elementlist) map.put (e.getname (), e.getText ()); // gratis sumber daya inputStream.close (); inputStream = null; peta mengembalikan; }
2. Gunakan Get (Key) Peta untuk mendapatkan nilai
Jenis pesan msgtype, acara
Jenis acara acara, klik
Nilai Kunci Acara EventKey sesuai dengan nilai kunci di antarmuka menu khusus
Catatan: Kunci adalah nama parameter
Lampiran: wechatconfig.java
// Buat menu public static final string menu_create_url = "https://api.weixin.qq.com/cgi-bin/menu/create"; // query menu kustom public static final string menu_get_url = "https://api.weixin.qq.com/cgi-bin/menu/get"; // hapus menu kustom public static final string menu_delte_url = "https://api.weixin.qq.com/cgi-bin/menu/delete";
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.