使用微信API創建公眾號自定義菜單

      網友投稿 997 2025-04-01

      大家可能經常看到一些微信公眾號具有功能強大的自定義菜單,點擊之后可以訪問很多有用的功能。


      這篇教程就教大家如何動手做一做。

      這個教程最后實現的效果是:創建一個一級菜單“UI5", 點擊之后彈出兩個二級菜單,如下圖藍色區域所示。每個二級菜單都能完成一些任務。

      那么用什么API創建這些自定義菜單呢?微信公眾號平臺技術文檔中,點擊"自定義菜單":

      文檔里給了創建自定義菜單需要維護參數的HTTPpost報文的格式:

      回到我的例子,我用postman發送這個HTTP post請求:

      這是我HTTP post的報文內容:

      { "button":[ { "name":"UI5", "sub_button":[{ "type": "view", "name": "Jerry List", "url": "http://wechatjerry.herokuapp.com/ui5" },{ "type": "click", "name": "Other UI5 application", "key": "dataQuery" }] } ] }

      使用微信API創建公眾號自定義菜單

      上述json格式的報文定義了一個一級菜單,標簽文本為UI5。兩個二級菜單(sub_button),類型分別為view和click。

      view類型即綁定一個HTML頁面到該二級菜單,點擊之后跳轉到這個頁面去。我的例子綁定的html頁面是http://wechatjerry.herokuapp.com/ui5。 類型為click的菜單很好理解,點擊后,微信平臺會發送一個事件給您公眾號的微信服務器上。您需要在您的微信服務器里對這個時間做處理。事件類型通過參數key指定,我上述例子的類型是dataQuery,這個參數可以隨意指定。

      響應類型為click的微信自定義二級菜單的偽代碼如下:

      app.route('/').post(function(req,res){ req.on("end",function(){ var msgType = formattedValue(getXMLNodeValue('MsgType', content)); if( msgType === "event"){ var eventKey = formattedValue(getXMLNodeValue('EventKey', content)); if( eventKey === "dataQuery"){ // 響應微信自定義二級菜單的點擊 } } } );

      Java Web項目,Android和微信小程序的初始頁面配置

      Java Web項目

      我們在Eclipse里開了Java Web項目之后,Run As Tomcat或者Apache服務器,本地運行,如果直接用http://localhost:8080訪問項目,會發現瀏覽器會打開一個默認的頁面。

      這個頁面是在什么地方配置的呢?

      每個Java Web工程的目錄下面,都有一個名為WEB-INF的目錄,里面包含一個配置文件web.xml。Web項目的默認頁面就定義在里面的welcome-file-list節點里。

      Android項目

      我們知道一個Android項目里可以定義不同的Activity,那么Android應用啟動后看到的初始頁面對應的Activity,定義在Android項目的AndroidManifest.xml配置文件里,屬性為android:name。看下面的例子:

      package="com.jerry.android4" android:versionCode="1" android:versionName="1.0" > android:minSdkVersion="8" android:targetSdkVersion="19" /> android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > android:name="com.jerry.android4.MainActivity" android:label="@string/app_name" >

      意思是這個Android應用默認啟動的activity是com.jerry.android4.MainActivity。

      微信小程序

      我的微信小程序里有很多視圖,我調試時發現,我的app.js的鉤子函數onLaunch的輸入參數,被微信框架填充為userLogin這個視圖。然而微信框架根據什么邏輯判斷出userLogin是微信小程序的初始頁面呢?

      起初我以為是在微信小程序的app.json或者project.config.json文件里配置初始頁面,像前面介紹的Java Web工程的web.xml和Android的AndroidManifest.xml一樣。后來發現沒有這樣的配置,微信框架會將app.json文件里pages屬性下面的第一條頁面作為初始化頁面。

      要驗證這個結論很簡單,我們做個測試,把appointments和userLogin這兩個視圖的順序在app.json里調換一下。發現調換之后,確實是當前處在app.json里的appointments視圖作為初始頁面了。

      要獲取更多Jerry的原創技術文章,請關注公眾號"汪子熙"。

      API Java javaScript 架構設計

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:如何進行ERP后實施審核
      下一篇:wps表格數據透視圖怎么做(如何在wps表格中生成數據透視圖)
      相關文章
      亚洲精品韩国美女在线| 亚洲黄网在线观看| 亚洲欧美日韩中文字幕一区二区三区 | 色欲aⅴ亚洲情无码AV| 亚洲乱亚洲乱妇无码| 亚洲精品国产摄像头| 亚洲A∨精品一区二区三区下载 | 亚洲Av无码专区国产乱码DVD | 亚洲综合精品成人| 亚洲色偷偷综合亚洲AV伊人蜜桃| 2020久久精品亚洲热综合一本| 亚洲已满18点击进入在线观看| 亚洲色大成网站www尤物| 亚洲乱码中文字幕在线| 亚洲av色香蕉一区二区三区 | 亚洲一级特黄无码片| 中文字幕亚洲无线码| 亚洲乱码国产乱码精品精| 亚洲爆乳无码一区二区三区| 亚洲国产精品免费视频| 久久精品国产亚洲AV大全| 亚洲成人网在线播放| 亚洲一区二区三区高清不卡| 亚洲av无码成人精品区一本二本| 伊人久久亚洲综合影院| 久久久亚洲精品蜜桃臀| 亚洲成av人片在线观看无码不卡| 亚洲成人中文字幕| 亚洲一级片在线观看| 亚洲成熟丰满熟妇高潮XXXXX| 亚洲国产一成久久精品国产成人综合| 国产亚洲?V无码?V男人的天堂 | 亚洲国产精品久久久天堂| 久久精品国产亚洲AV电影| 亚洲日本va在线观看| 蜜臀亚洲AV无码精品国产午夜.| 国产亚洲人成网站在线观看| 亚洲av综合av一区| 亚洲伊人色一综合网| 亚洲一区二区三区写真| 亚洲AV日韩精品一区二区三区|