微信公衆號開發(三、自定義菜單)轉

  一、瞭解自定義菜單

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

  而自定義菜單可以實現的功能也是多種多樣的,根據實現功能的不同,微信自定義菜單按鈕共分爲10種類型:

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

  二、瞭解自定義菜單的數據結構

  自定義菜單與之前消息回覆的XML結構不同,自定義菜單選擇時候的是我們更加熟悉的JSON數據結構,官方給出的JSON數據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"

            }]

       }]

 }

  稍微解釋一下,微信公衆平臺的定義菜單類型雖然非常之多。但是總結歸納一共有兩大類,分別是click類型(點擊觸發關鍵字key)的和view類型(點擊跳轉URL)的。瞭解了基本的規則後,我們來看一下詳細的參數解釋:

  稍微思考一下,根據這個JSON結構,我們需要怎樣去封裝實體類呢?

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

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

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

  ① Button類

  ② ClickButton類

  ③ ViewButton類

  ④ Menu類

  三、編寫組裝菜單方法

  實體類組裝完畢後,我們進組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("傑瑞教育官網");

button21.setType("view");

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

 

ViewButton button22 = new ViewButton();

button22.setName("傑瑞教育新聞網");

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("相關網址"); //將21/22兩個button作爲二級菜單封裝第二個二級菜單

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

 

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

return menu;

}

  四、調用接口生成菜單

    菜單組裝完成後,我們需調用官方提供的接口,將自定義菜單發佈到微信平臺

  由於我們直接已經寫好doPost方式調用接口的方法,所以直接編寫方法調用接口即可:

  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,可以判斷創建是否成功:

  五、測試類調用方法生成菜單

    完成上述各種功能後,回到我們的測試類,調用方法:

  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("菜單創建成功!");

    }else{

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

    }

   }

  看到控制檯結果:

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章