日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

使用Java语言开发微信公众平台(八)——自定义菜单功能

發(fā)布時間:2023/12/31 综合教程 33 生活家
生活随笔 收集整理的這篇文章主要介紹了 使用Java语言开发微信公众平台(八)——自定义菜单功能 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

  隨著上一篇文章的結(jié)束,我們已經(jīng)實現(xiàn)了所有消息的類型的回復(fù)功能。今天,我們來學(xué)習(xí)更加高大上,也更加重要的自定義菜單功能。

  一、了解自定義菜單

  自定義菜單是微信公眾平臺最常用也是最重要的功能之一。根據(jù)微信平臺要求,自定義自定義菜單最多包括3個一級菜單,每個一級菜單最多包含5個二級菜單。其中一級菜單最多4個漢字,二級菜單最多7個漢字,多出來的部分將會以“...”代替。

  而自定義菜單可以實現(xiàn)的功能也是多種多樣的,根據(jù)實現(xiàn)功能的不同,微信自定義菜單按鈕共分為10種類型:

  請注意,3到8的所有事件,僅支持微信iPhone5.4.1以上版本,和Android5.4以上版本的微信用戶,舊版本微信用戶點擊后將沒有回應(yīng),開發(fā)者也不能正常接收到事件推送。9和10,是專門給第三方平臺旗下未微信認(rèn)證(具體而言,是資質(zhì)認(rèn)證未通過)的訂閱號準(zhǔn)備的事件類型,它們是沒有事件推送的,能力相對受限,其他類型的公眾號不必使用。

  二、了解自定義菜單的數(shù)據(jù)結(jié)構(gòu)

  自定義菜單與之前消息回復(fù)的XML結(jié)構(gòu)不同,自定義菜單選擇時候的是我們更加熟悉的JSON數(shù)據(jù)結(jié)構(gòu),官方給出的JSON數(shù)據(jù)Demo如下:

{

"button":[

{

"type":"click",

"name":"今日歌曲",

"key":"V1001_TODAY_MUSIC"

},

{

"name":"菜單",

"sub_button":[

{

"type":"view",

"name":"搜索",

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

},

{

"type":"view",

"name":"視頻",

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

},

{

"type":"click",

"name":"贊一下我們",

"key":"V1001_GOOD"

}]

}]

}

  稍微解釋一下,微信公眾平臺的定義菜單類型雖然非常之多。但是總結(jié)歸納一共有兩大類,分別是click類型(點擊觸發(fā)關(guān)鍵字key)的和view類型(點擊跳轉(zhuǎn)URL)的。了解了基本的規(guī)則后,我們來看一下詳細(xì)的參數(shù)解釋:

  稍微思考一下,根據(jù)這個JSON結(jié)構(gòu),我們需要怎樣去封裝實體類呢?

  二自定義菜單實體類的封裝

  根據(jù)上述解釋,我們知道菜單類型有兩種:click類型、view類型。那么我們便需要clickButton類、viewButton類。而所有菜單共有屬性,我們又需要一個Button類作為父類。這樣我們才能組裝好一個Button,那么多個按鈕組裝成的菜單,我們又需要一個Menu類。最終我們總結(jié)出來,需要四個類的支持才能完成菜單實體的封裝:

  每一個類的屬性類型如下:

  ① Button類

  ② ClickButton類

  ③ ViewButton類

  ④ Menu類

  三、編寫組裝菜單方法

  實體類組裝完畢后,我們進(jìn)組WeiXinUtil類,編寫自定義菜單的組裝方法:

/**

* 組裝菜單

* @return

*/

public static Menu initMenu(){

Menu menu = new Menu();

ClickButton button11 = new ClickButton();

button11.setName("了解杰瑞教育");

button11.setType("click");

button11.setKey("11");

ClickButton button12 = new ClickButton();

button12.setName("加入杰瑞教育");

button12.setType("click");

button12.setKey("12");

ViewButton button21 = new ViewButton();

button21.setName("杰瑞教育官網(wǎng)");

button21.setType("view");

button21.setUrl("http://www.jerehedu.com");

ViewButton button22 = new ViewButton();

button22.setName("杰瑞教育新聞網(wǎng)");

button22.setType("view");

button22.setUrl("http://www.jredu100.com");

ClickButton button31 = new ClickButton();

button31.setName("杰小瑞");

button31.setType("click");

button31.setKey("31");

Button button1 = new Button();

button1.setName("杰瑞教育"); //將11/12兩個button作為二級菜單封裝第一個一級菜單

button1.setSub_button(new Button[]{button11,button12});

Button button2 = new Button();

button2.setName("相關(guān)網(wǎng)址"); //將21/22兩個button作為二級菜單封裝第二個二級菜單

button2.setSub_button(new Button[]{button11,button12});

menu.setButton(new Button[]{button1,button2,button31});// 將31Button直接作為一級菜單

return menu;

}

  四、調(diào)用接口生成菜單

    菜單組裝完成后,我們需調(diào)用官方提供的接口,將自定義菜單發(fā)布到微信平臺

  由于我們直接已經(jīng)寫好doPost方式調(diào)用接口的方法,所以直接編寫方法調(diào)用接口即可:

  public static int createMenu(String token,String menu) throws ClientProtocolException, IOException {

    int result = 0;

    String url = CREATE_MENU_URL.replace("ACCESS_TOKEN", token);

    JSONObject jsonObject = doPostStr(url, menu);

    if(jsonObject != null){

      result = jsonObject.getInt("errcode");

    }

    return result;

   }

   其中,我們返回errcode,可以判斷創(chuàng)建是否成功:

  五、測試類調(diào)用方法生成菜單

    完成上述各種功能后,回到我們的測試類,調(diào)用方法:

  public static void main(String[] args) throws ClientProtocolException, IOException, KeyManagementException, NoSuchAlgorithmException, NoSuchProviderException {

    AccessToken token = WeiXinUtil.getAccessToken();

    System.out.println("Access_Token為:"+token.getToken());

    System.out.println("有效時間為:"+token.getExpiresIn());

    String menu = JSONObject.fromObject(WeiXinUtil.initMenu()).toString();

    int result = WeiXinUtil.createMenu(token.getToken(), menu);

    if(result==0){

      System.out.println("菜單創(chuàng)建成功!");

    }else{

      System.out.println("菜單創(chuàng)建失敗");

    }

   }

  看到控制臺結(jié)果:

  愉快的看了看手機,效果如下(當(dāng)然現(xiàn)在只完成展示,還未做點擊事件操作):

總結(jié)

以上是生活随笔為你收集整理的使用Java语言开发微信公众平台(八)——自定义菜单功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。