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

這篇教程就教大家如何動手做一做。
這個教程最后實現的效果是:創建一個一級菜單“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" }] } ] }
上述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小時內刪除侵權內容。