微信菜單開(kāi)發(fā)

因?yàn)榻裉煨枰_(kāi)發(fā)微信,然后就從網(wǎng)上找了個(gè)示例:覺(jué)得還不錯(cuò)。原文鏈接如下:

http://blog.csdn.net/gf771115/article/details/16825447(基礎(chǔ)菜單)

http://blog.csdn.net/gf771115/article/details/16825447(自定義菜單)

公眾平臺(tái)API文檔中給出了自定義菜單的json結(jié)構(gòu)示例,我從中截取兩個(gè)菜單項(xiàng)的json代碼,一個(gè)是click類型,另一個(gè)是view類型,如下所示。

[html]view

plaincopy

{

"type":"click",

"name":"今日歌曲",

"key":"V1001_TODAY_MUSIC"

},

{

"type":"view",

"name":"歌手簡(jiǎn)介",

"url":"http://www.qq.com/"

}

從上面可以看出,兩種類型的菜單除了type值不同之外,屬性也有差別。click類型的菜單有key屬性,而view類型的菜單沒(méi)有key屬性,與之對(duì)應(yīng)的是url屬性。通過(guò)上一篇的學(xué)習(xí)我們知道,key值是用于判斷用戶點(diǎn)擊了哪個(gè)click類型的菜單項(xiàng)。而view類型的菜單沒(méi)有key屬性,目前無(wú)法在公眾賬號(hào)后臺(tái)判斷是否有用戶點(diǎn)擊了view類型的菜單項(xiàng),也就沒(méi)辦法知道哪個(gè)用戶點(diǎn)擊了view類型的菜單項(xiàng)。

建立view類型的菜單對(duì)象

View類型的菜單有3個(gè)屬性:type、name和url。在上一篇文章中,我們創(chuàng)建了菜單項(xiàng)的基類Button,Button類只有一個(gè)屬性name。View類型的菜單對(duì)象也需要繼承Button類,代碼如下:

[java]view

plaincopy

packageorg.liufeng.weixin.pojo;

/**

*?view類型的菜單

*

*?@author?liuyq

*?@date?2013-04-10

*/

publicclassViewButtonextendsButton?{

privateString?type;

privateString?url;

publicString?getType()?{

returntype;

}

publicvoidsetType(String?type)?{

this.type?=?type;

}

publicString?getUrl()?{

returnurl;

}

publicvoidsetUrl(String?url)?{

this.url?=?url;

}

}

創(chuàng)建帶view類型的菜單示例

我們對(duì)前一篇文章中給出的菜單創(chuàng)建代碼進(jìn)行調(diào)整,增加view類型的菜單項(xiàng),完整的菜單創(chuàng)建代碼如下:

[java]view

plaincopy

packageorg.liufeng.weixin.main;

importorg.liufeng.weixin.pojo.AccessToken;

importorg.liufeng.weixin.pojo.Button;

importorg.liufeng.weixin.pojo.CommonButton;

importorg.liufeng.weixin.pojo.ComplexButton;

importorg.liufeng.weixin.pojo.Menu;

importorg.liufeng.weixin.pojo.ViewButton;

importorg.liufeng.weixin.util.WeixinUtil;

importorg.slf4j.Logger;

importorg.slf4j.LoggerFactory;

/**

*?菜單管理器類

*

*?@author?liufeng

*?@date?2013-08-08

*/

publicclassMenuManager?{

privatestaticLogger?log?=?LoggerFactory.getLogger(MenuManager.class);

publicstaticvoidmain(String[]?args)?{

//?第三方用戶唯一憑證

String?appId?="000000000000000000";

//?第三方用戶唯一憑證密鑰

String?appSecret?="00000000000000000000000000000000";

//?調(diào)用接口獲取access_token

AccessToken?at?=?WeixinUtil.getAccessToken(appId,?appSecret);

if(null!=?at)?{

//?調(diào)用接口創(chuàng)建菜單

intresult?=?WeixinUtil.createMenu(getMenu(),?at.getToken());

//?判斷菜單創(chuàng)建結(jié)果

if(0==?result)

log.info("菜單創(chuàng)建成功!");

else

log.info("菜單創(chuàng)建失敗,錯(cuò)誤碼:"+?result);

}

}

/**

*?組裝菜單數(shù)據(jù)

*

*?@return

*/

privatestaticMenu?getMenu()?{

CommonButton?btn11?=newCommonButton();

btn11.setName("天氣預(yù)報(bào)");

btn11.setType("click");

btn11.setKey("11");

CommonButton?btn12?=newCommonButton();

btn12.setName("公交查詢");

btn12.setType("click");

btn12.setKey("12");

CommonButton?btn13?=newCommonButton();

btn13.setName("周邊搜索");

btn13.setType("click");

btn13.setKey("13");

CommonButton?btn14?=newCommonButton();

btn14.setName("歷史上的今天");

btn14.setType("click");

btn14.setKey("14");

CommonButton?btn15?=newCommonButton();

btn15.setName("電影排行榜");

btn15.setType("click");

btn15.setKey("32");

CommonButton?btn21?=newCommonButton();

btn21.setName("歌曲點(diǎn)播");

btn21.setType("click");

btn21.setKey("21");

CommonButton?btn22?=newCommonButton();

btn22.setName("經(jīng)典游戲");

btn22.setType("click");

btn22.setKey("22");

CommonButton?btn23?=newCommonButton();

btn23.setName("美女電臺(tái)");

btn23.setType("click");

btn23.setKey("23");

CommonButton?btn24?=newCommonButton();

btn24.setName("人臉識(shí)別");

btn24.setType("click");

btn24.setKey("24");

CommonButton?btn25?=newCommonButton();

btn25.setName("聊天嘮嗑");

btn25.setType("click");

btn25.setKey("25");

CommonButton?btn31?=newCommonButton();

btn31.setName("Q友圈");

btn31.setType("click");

btn31.setKey("31");

CommonButton?btn33?=newCommonButton();

btn33.setName("幽默笑話");

btn33.setType("click");

btn33.setKey("33");

CommonButton?btn34?=newCommonButton();

btn34.setName("用戶反饋");

btn34.setType("click");

btn34.setKey("34");

CommonButton?btn35?=newCommonButton();

btn35.setName("關(guān)于我們");

btn35.setType("click");

btn35.setKey("35");

ViewButton?btn32?=newViewButton();

btn32.setName("使用幫助");

btn32.setType("view");

btn32.setUrl("http://liufeng.gotoip2.com/xiaoqrobot/help.jsp");

ComplexButton?mainBtn1?=newComplexButton();

mainBtn1.setName("生活助手");

mainBtn1.setSub_button(newButton[]?{?btn11,?btn12,?btn13,?btn14,?btn15?});

ComplexButton?mainBtn2?=newComplexButton();

mainBtn2.setName("休閑驛站");

mainBtn2.setSub_button(newButton[]?{?btn21,?btn22,?btn23,?btn24,?btn25?});

ComplexButton?mainBtn3?=newComplexButton();

mainBtn3.setName("更多");

mainBtn3.setSub_button(newButton[]?{?btn31,?btn33,?btn34,?btn35,?btn32?});

/**

*?這是公眾號(hào)xiaoqrobot目前的菜單結(jié)構(gòu),每個(gè)一級(jí)菜單都有二級(jí)菜單項(xiàng)

*

*?在某個(gè)一級(jí)菜單下沒(méi)有二級(jí)菜單的情況,menu該如何定義呢?

*?比如,第三個(gè)一級(jí)菜單項(xiàng)不是“更多體驗(yàn)”,而直接是“幽默笑話”,那么menu應(yīng)該這樣定義:

*?menu.setButton(new?Button[]?{?mainBtn1,?mainBtn2,?btn33?});

*/

Menu?menu?=newMenu();

menu.setButton(newButton[]?{?mainBtn1,?mainBtn2,?mainBtn3?});

returnmenu;

}

}

119~122行代碼就是用于創(chuàng)建view類型菜單項(xiàng)的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容