zl程序教程

您现在的位置是:首页 >  其他

当前栏目

微信企业号开发:自定义菜单详解手机开发

企业微信手机开发 详解 自定义 菜单
2023-06-13 09:20:12 时间

开发微信企业号可以通过程序自定义菜单,只需要调用相关的接口就可以实现。

其实这个菜单也就是微信底部的菜单,目前自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“ ”代替。其实创建菜单也很简单。

但有一点需要说明,如果有子菜单,那么这个菜单就不会向后端发送事件。例如:我定义了三个一级菜单一个click,两个view。

如果没有子菜单,则点击click类型的菜单时,后主动向后端发送上报菜单事件,如果有则不会发送上报菜单事件。

如果没有子菜单,则点击view类型的菜单时,回主动向后端发送点击菜单跳转链接的事件。并且会打开对应的网页,如果有则不会发送点击菜单跳转链接的事件,也不会打开对应的网页。

也就是,如果有子菜单,则这个菜单,就是点击单纯的显示子菜单,不会有其他的动作了。

例如:

微信企业号开发:自定义菜单详解手机开发

核心代码菜单相关:

public enum MenuTypeEnum 

 click = 1, 

 view = 2, 

 scancode_push = 3, 

 scancode_waitmsg = 4, 

 pic_sysphoto = 5, 

 pic_photo_or_album = 6, 

 pic_weixin = 7, 

 location_select = 8 

 public abstract class SubButton 

 /// summary 

 /// 菜单的响应动作类型,目前有click、view两种类型 scancode_push 扫码推事件scancode_waitmsg 扫码推事件且弹出“消息接收中”提示框 

 /// /summary 

 public string type { get; protected set; } 

 /// summary 

 /// 菜单标题,不超过16个字节,子菜单不超过40个字节 

 /// /summary 

 public string name { get; set; } 

 public List SubButton sub_button { get; set; } 

 public virtual bool HasError() 

 if (string.IsNullOrEmpty(this.name)) 

 LogInfo.Error("菜单名称为空"); 

 return true; 

 if (string.IsNullOrEmpty(this.type)) 

 LogInfo.Error("菜单类型为空"); 

 return true; 

 if (sub_button!=null sub_button.Count 0) 

 foreach (SubButton bt in sub_button) 

 if (bt.HasError()) 

 return true; 

 return false; 

 public static SubButton CreateSubButton(MenuTypeEnum type,string name,string key,string url) 

 SubButton subButton = null; 

 string menuTypeText = GetMenuTypeText(type); 

 switch (type) 

 case MenuTypeEnum.view: 

 subButton = new SubViewButton(menuTypeText,name, url); 

 break; 

 case MenuTypeEnum.click: 

 case MenuTypeEnum.scancode_push: 

 case MenuTypeEnum.scancode_waitmsg: 

 case MenuTypeEnum.pic_sysphoto: 

 case MenuTypeEnum.pic_photo_or_album: 

 case MenuTypeEnum.pic_weixin: 

 case MenuTypeEnum.location_select: 

 subButton = new SubClickButton(menuTypeText, name, key); 

 break; 

 default: 

 throw new Exception("type=" + type + ",此类型的SubButton没有实现"); 

 return subButton; 

 public static MenuTypeEnum GetMenuType(string type) 

 MenuTypeEnum text = MenuTypeEnum.click; 

 switch (type) 

 case "click": 

 text = MenuTypeEnum.click; 

 break; 

 case "view": 

 text = MenuTypeEnum.view ; 

 break; 

 case "scancode_push": 

 text =MenuTypeEnum.scancode_push ; 

 break; 

 case "scancode_waitmsg": 

 text = MenuTypeEnum.scancode_waitmsg ; 

 break; 

 case "pic_sysphoto" : 

 text = MenuTypeEnum.pic_sysphoto; 

 break; 

 case "pic_photo_or_album": 

 text = MenuTypeEnum.pic_photo_or_album ; 

 break; 

 case "pic_weixin": 

 text = MenuTypeEnum.pic_weixin ; 

 break; 

 case "location_select": 

 text =MenuTypeEnum.location_select ; 

 break; 

 default: 

 throw new Exception("type=" + type + ",此类型的MenuTypeEnum没有找到"); 

 return text; 

 public static string GetMenuTypeText(MenuTypeEnum type) 

 string text = ""; 

 switch (type) 

 case MenuTypeEnum.click: 

 text = "click"; 

 break; 

 case MenuTypeEnum.view: 

 text = "view"; 

 break; 

 case MenuTypeEnum.scancode_push: 

 text = "scancode_push"; 

 break; 

 case MenuTypeEnum.scancode_waitmsg: 

 text = "scancode_waitmsg"; 

 break; 

 case MenuTypeEnum.pic_sysphoto: 

 text = "pic_sysphoto"; 

 break; 

 case MenuTypeEnum.pic_photo_or_album: 

 text = "pic_photo_or_album"; 

 break; 

 case MenuTypeEnum.pic_weixin: 

 text = "pic_weixin"; 

 break; 

 case MenuTypeEnum.location_select: 

 text = "location_select"; 

 break; 

 default: 

 throw new Exception("type=" + type + ",此类型的MenuTypeEnum没有实现"); 

5306.html

app程序应用开发手机开发无线开发移动端开发