1. تخصيص وصف القائمة ونوع الزر
1. وصف القائمة
1) تشمل القوائم المخصصة ما يصل إلى 3 قوائم من المستوى الأول ، وكل قائمة من المستوى الأول تحتوي على قوائم ما يصل إلى 5 من المستوى الثاني.
2) تحتوي القائمة من المستوى الأول على ما يصل إلى 4 أحرف صينية ، والقائمة من المستوى الثاني تحتوي على ما يصل إلى 7 أحرف صينية. سيتم استبدال الأجزاء الإضافية بـ "...".
3) بعد إنشاء قائمة مخصصة ، فإن استراتيجية تحديث القائمة هي أنه عندما يدخل المستخدم صفحة جلسة الحساب الرسمية أو صفحة ملف تعريف الحساب الرسمي ، إذا وجد أن الطلب الأخير لسحب القائمة كان قبل 5 دقائق ، فسوف يسحب القائمة. إذا تم تحديث القائمة ، فسيتم تحديث قائمة العميل. أثناء الاختبار ، يمكنك محاولة إلغاء متابعة الحساب العام ومتابعته مرة أخرى ، ويمكنك رؤية التأثير بعد الإنشاء.
2. يمكن لواجهة القائمة المخصصة تطبيق أنواع متعددة من الأزرار
1) انقر فوق: بعد أن ينقر المستخدم على زر انقر فوق عند النقر فوق حدث الضغط ، سيقوم خادم WeChat بدفع بنية حدث نوع الرسالة إلى المطور من خلال واجهة الرسائل (راجع دليل واجهة الرسائل) ، وتقديم قيمة المفتاح التي تم ملؤها بواسطة المطور في الزر. يمكن للمطور التفاعل مع المستخدم من خلال قيمة المفتاح المخصصة ؛
2) عرض: url Jump بعد أن ينقر المستخدم على زر العرض ، سيفتح عميل WeChat عنوان URL لصفحة الويب التي تم ملؤها من قبل المطور في الزر ، والتي يمكن دمجها مع إذن صفحة الويب للحصول على واجهة المعلومات الأساسية للمستخدم للحصول على معلومات أساسية للمستخدم.
3) SCANCODE_PUSH: بعد أن ينقر المستخدم على الزر لحدث دفع رمز المسح الضوئي ، سيقوم عميل WeChat بالاتصال بأداة المسح الضوئي ، وعرض نتيجة المسح الضوئي بعد إكمال تشغيل رمز المسح (إذا كان عنوان URL ، فسيقوم بإدخال عنوان URL) ، وسيتم تمرير نتيجة المسح إلى المطور ، ويمكن للمطور إرسال رسالة.
4) SCANCODE_WAITMSG: مسح الكود لدفع الحدث وملبع موجه "استقبال الرسالة". بعد أن ينقر المستخدم على الزر ، سيقوم عميل WeChat باستدعاء أداة المسح. بعد الانتهاء من عملية المسح ، يتم تمرير نتيجة رمز المسح إلى المطور. في الوقت نفسه ، يتم إغلاق أداة المسح ، وينبثق مربع موجه "استلام الرسالة" ، ثم قد يتم استلام رسالة أرسلها المطور.
5) PIC_SYSPHOTO: بعد أن ينقر المستخدم على الزر ، سيقوم عميل WeChat بضبط كاميرا النظام. بعد الانتهاء من عملية الصور ، سيتم إرسال الصور التي تم التقاطها إلى المطور ودفع الحدث إلى المطور. في الوقت نفسه ، سيتم إغلاق كاميرا النظام ، ويمكن استلام الرسالة التي يرسلها المطور.
6) PIC_PHOTO_OR_ALBUM: بعد أن ينقر المستخدم على الزر ، سيظهر عميل WeChat المحدد للمستخدم لتحديد "التقاط الصور" أو "حدد من ألبوم الهاتف المحمول". بعد أن يختار المستخدم ، سوف يمر عبر العمليتين الأخريين.
7) PIC_WEIXIN: بعد أن ينقر المستخدم على الزر الموجود في مرسل ألبوم صور WeChat ، سيقوم عميل WeChat بضبط ألبوم صور WeChat. بعد الانتهاء من عملية التحديد ، سيتم إرسال الصورة المحددة إلى خادم المطور ودفع الحدث إلى المطور. في الوقت نفسه ، سيتم إغلاق الألبوم. بعد ذلك ، قد يتم استلام الرسالة التي أرسلها المطور.
8) site_select: بعد أن ينقر المستخدم على الزر عندما ينقر المستخدم على الزر ، سيقوم عميل WeChat بالاتصال بأداة تحديد الموقع الجغرافي. بعد الانتهاء من عملية التحديد ، سيتم إرسال الموقع الجغرافي المحدد إلى خادم المطور ، وسيتم إغلاق أداة اختيار الموقع. بعد ذلك ، قد يتم استلام الرسالة التي أرسلها المطور.
9) Media_id: بعد أن ينقر المستخدم على زر نوع الوسائط _id ، سيرسل خادم WeChat المادة المقابلة لمعرف المواد الدائم الذي تم ملؤه بواسطة المطور إلى المستخدم. يمكن أن تكون أنواع المواد الدائمة هي الصور والصوت والفيديو والرسائل الرسومية. يرجى ملاحظة: يجب أن يكون معرف المواد الدائم هو المعرف القانوني الذي تم الحصول عليه بعد تحميل واجهة "إدارة المواد/إضافة مادة دائمة".
10) view_limited: قفز عنوان URL للرسالة الرسومية بعد أن ينقر المستخدم على زر View_Limited Type ، سيفتح عميل WeChat عنوان URL الرسومي الذي يتوافق مع معرف المادة الدائم الذي تم ملؤه بواسطة المطور في الزر. يدعم نوع المواد الدائمة رسالة الرسوم فقط. يرجى ملاحظة: يجب أن يكون معرف المواد الدائم هو المعرف القانوني الذي تم الحصول عليه بعد تحميل واجهة "إدارة المواد/إضافة مادة دائمة".
ملاحظة: تدعم جميع الأحداث من 3 إلى 8 مستخدمي WeChat فقط من iPhone 5.4.1 أو أعلى ، و Android 5.4 أو أعلى. لن يستجيب مستخدمو الإصدار القديم من WeChat بعد النقر ، ولا يمكن للمطورين الحصول على دفعات الحدث بشكل طبيعي. 9 و 10 من أنواع الأحداث التي تم إعدادها خصيصًا لحسابات الاشتراك بموجب منصات الطرف الثالث لم يتم اعتمادها من قبل WeChat (على وجه التحديد ، لم تتم الموافقة عليها من خلال شهادة التأهيل). ليس لديهم أي حدث وقدراتهم محدودة نسبيا. لا تحتاج إلى استخدام أنواع أخرى من الحسابات العامة.
2. إنشاء/استعلام/حذف القوائم
نقرة رسمية وعرض الحدث العرض التوضيحي
{"زر": [{"type": "انقر" ، "الاسم": "أغنية اليوم" ، "المفتاح": "v1001_today_music"} ، {"name": "menu" ، "sub_button": [{"type" ، "type": "miniprogram" ، "name": "wxa" ، "url": "المفتاح": "v1001_good"}]}]}أنواع أخرى (بما في ذلك 9 و 10)
{"Button": [{"name": "scancode_waitmsg" ، "name": "scancode with profst" ، "key": "selfmenu_0_1" ، "sub_button": []}]} ، {"name": "إرسال صورة" ، "sub_button": [{"type": "pic_sysphoto" ، "pic_photo_or_album" ، "name": {"name": "إرسال موقع" ، "اكتب": "location_select" ، "المفتاح": "selfmenu_2_0"} ، {"type": "media_id" ، "name": "picture" ، "media_id":1. ابدأ في تغليف فئة الكيان وفقًا للمثال
زر القائمة الفئة الأساسية basicbutton.java
الفئة العامة BasicButton {اسم السلسلة الخاصة ؛ السلسلة العامة getName () {return name ؛ } public void setName (اسم السلسلة) {this.name = name ؛ }} القائمة
قائمة الفئة العامة {سلسلة ثابتة عامة انقر فوق = "انقر فوق" ؛ // انقر فوق القائمة العامة النهائية للسلسلة الثابتة = "عرض" ؛ // url menu public static string scancode_waitmsg = "scancode_waitmsg" ؛ . . // نظام لالتقاط الصور ونشر سلسلة ثابتة عامة pic_photo_or_album = "pic_photo_or_album" ؛ . // انشر صورة على WeChat Public Final Static String location_select = "location_select" ؛ // إرسال موقع BasicButton الخاص [] ؛ Public BasicButton [] getButton () {return button ؛ } public void setButton (basicbutton [] button) {this.button = button ؛ }} عرض نوع الفئة الزر ViewButton.java. يمكن تعبئة أنواع أخرى واحدة تلو الأخرى وفقًا لهذا.
الفئة العامة ViewButton يمتد BasicButton {private string type = menu.view ؛ عنوان URL الخاص بالسلسلة ؛ السلسلة العامة gettype () {نوع الإرجاع ؛ } public void setType (نوع السلسلة) {this.type = type ؛ } السلسلة العامة geturl () {return url ؛ } public void seturl (url url) {this.url = url ؛ }}تحتوي القائمة من المستوى الأول على تغليف لمجمع القائمة من المستوى الثاني.
يمتد مجمع الطبقة العامة BasicButton {private basicbutton [] sub_button ؛ Public BasicButton [] getB_button () {return sub_button ؛ } public void setsub_button (basicbutton [] sub_button) {this.sub_button = sub_button ؛ }}2. التغليف الكامل ، قم بتجميع القائمة
القائمة الثابتة الخاصة getMenu () {viewButton btn11 = new ViewButton () ؛ btn11.setName ("Test 11") ؛ btn11.seturl ("http://www.qq.com") ؛ clickbutton btn21 = new clickbutton () ؛ BTN21.SetName ("Test 21") ؛ BTN21.SetKey ("21") ؛ clickbutton btn22 = new clickbutton () ؛ BTN22.SetName ("Test 22") ؛ BTN22.SetKey ("22") ؛ // قائمة 1 قائمة (لا توجد قائمة ثانوية) complexMenu mainbtn1 = new ComplexMenu () ؛ mainbtn1.setName ("Test 1") ؛ mainbtn1.setsub_button (New BasicButton [] {btn11}) ؛ // قائمة 1 قائمة (مع القائمة الثانوية) ComplexMenu MainBtn2 = New ComplexMenu () ؛ MainBtn2.setName ("Test 2") ؛ MainBtn2.SetSub_button (New BasicButton [] {Btn21 ، Btn22}) ؛ قائمة القائمة = قائمة جديدة () ؛ Menu.setButton (New BasicButton [] {mainbtn1 ، mainbtn2}) ؛ قائمة العودة ؛ }3. إنشاء قوائم مخصصة
/ ** * قائمة القائمة التي تم إنشاؤها * * @param عنصر قائمة القائمة * param token epantization token * @return {"errcode": 0 ، "errmsg": "ok"} */ public resultState CreateMenu (قائمة القائمة ، الرمز المميز للسلسلة) {tremap <string> map = new treemap <string ، string> () ؛ map.put ("access_token" ، token) ؛ String jSondata = jsonutil.tojson (menu) .ToString () ؛ النتيجة السلسلة = httprequtil.httpsdefaultexecute (httprequtil.post_method ، wechatconfig.menu_create_url ، map ، jsondata) ؛ إرجاع jsonutil.fromson (النتيجة ، resultState.Class) ؛ }4. الاستعلام عن قوائم مخصصة
تم إرجاع مثيل
المقابلة لإنشاء واجهة ، يعيد JSON الصحيح النتيجة:
{"menu": {"button": [{"type": "الاسم": "قائمة" ، "sub_button": [{"type": "view" ، "name": "search" ، "url": "sub_button": []} ، {"type": "click" ، "name": "Like Us" ، "Key": / ** * احصل على قائمة مخصصة * * param token * @regurn */ public string getMenu (string token) {treemap <string ، string> map = new treemap <string ، string> () ؛ map.put ("access_token" ، token) ؛ سلسلة السلسلة = httprequtil.httpsdefaultexecute (httprequtil.get_method ، wechatconfig.menu_get_url ، map ، "") ؛ نتيجة العودة }Menuattr.java
/ ** * جميع خصائص القائمة * Author Phil * */ public Class Menuattr تمتد BasicMenu {نوع السلسلة الخاصة ؛ عنوان URL الخاص بالسلسلة ؛ مفتاح السلسلة الخاص ؛ سلسلة خاصة sub_button ؛ Get/SET Method} فئة القائمة التي تم إرجاعها menureturn.java
/ ** * فئة القائمة التي تم إرجاعها * Author Phil * */ Public Class Menureturn يمتد BasicMenu {private menuattr [] sub_button ؛ menuattr public [] getub_button () {return sub_button ؛ } public void setsub_button (menuattr [] subbutton) {sub_button = subbutton ؛ }}قم بتحويل السلاسل التي تنظمها JSON إلى كائنات القائمة
/ ** * قم بتحويل سلسلة بتنسيق JSON إلى كائن قائمة * param json * return */ قائمة عامة <MenUreturn> convertmenu (String json) {list <Menureturn> list = new ArrayList <Menureturn> () ؛ if (json! = null &&! " jsonarray array = object.getJsonObject ("menu"). getjsonarray ("button") ؛ لـ (int i = 0 ؛ i <array.size () ؛ i ++) {menureturn mr = new menureturn () ؛ mr = array.getObject (i ، menureturn.class) ؛ list.add (MR) ؛ }} قائمة الإرجاع ؛ }ملاحظة: يستخدم Fastjson هنا
فيما يلي طريقة تحتاج إلى تحسين. من فضلك أعطني بعض النصائح إذا كان لديك أي نصيحة أفضل
5. حذف قائمة مخصصة
/ ** * حذف القائمة المخصصة * * param token * return */ public boolean deletemenu (string token) {boolean falg = true ؛ treemap <string ، string> map = new treemap <string ، string> () ؛ map.put ("access_token" ، token) ؛ سلسلة السلسلة = httprequtil.httpsdefaultexecute (httprequtil.get_method ، wechatconfig.menu_delte_url ، map ، "") ؛ strongeState State = jsonutil.fromjson (النتيجة ، resultState.Class) ؛ if (state.geterRcode ()! = 0 || state.geterrmsg ()! = "OK") {false = false ؛ } إرجاع خطأ ؛ }3.
بعد أن ينقر المستخدم على القائمة المخصصة ، ستضغط WeChat على حدث النقر إلى المطور. يرجى ملاحظة أن قائمة النقرات تنبثق من القائمة الفرعية ولن تقوم بإنشاء تقرير. يرجى ملاحظة أن جميع الأحداث من الثالثة إلى الثامنة تدعم فقط مستخدمي WeChat من iPhone 5.4.1 أو أعلى ، و Android 5.4 أو أعلى. لن يستجيب مستخدمو الإصدار القديم من WeChat بعد النقر ، ولا يمكن للمطورين الحصول على دفعات الحدث بشكل طبيعي.
1. تحليل حزمة بيانات XML التي دفعها WeChat
/*** طلبات التحليل من WeChat (XML)* XML مثال* <xml> <TouserName> <! <sggtype> <! // قم بتخزين النتيجة المحلية في خريطة HashMap <String ، String> Map = New HashMap <String ، String> () ؛ // احصل على دفق الإدخال من request inputStream inputStream = request.getInputStream () ؛ // اقرأ دفق الإدخال saxreader reader = new saxreader () ؛ وثيقة المستند = reader.read (inputStream) ؛ // احصل على جذر عنصر جذر XML = document.getRootElement () ؛ // احصل على جميع العقد الفرعية لقائمة عنصر الجذر <Element> elementlist = root.elements () ؛ // اجتياز جميع العقد الفرعية لـ (Element E: ElementList) map.put (e.getName () ، e.getText ()) ؛ // Free the Resource inputStream.Close () ؛ inputStream = null ؛ خريطة العودة }
2. استخدم GET (مفتاح) الخريطة للحصول على قيمة
نوع رسالة msgtype ، الحدث
نوع الحدث ، انقر فوق
تتوافق قيمة مفتاح EventKey مع قيمة المفتاح في واجهة القائمة المخصصة
ملاحظة: المفتاح هو اسم المعلمة
المرفق: WeChatconfig.java
// قم بإنشاء قائمة Static Final String Menu_create_url = "https://api.weixin.qq.com/cgi-bin/menu/create" ؛ // استعلام القائمة المخصصة القائمة المخصصة للسلسلة النهائية static menu_get_url = "https://api.weixin.qq.com/cgi-bin/menu/get" ؛ .
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.