![【移动应用开发技术】C#开发微信之如何实现菜单管理_第1页](http://file4.renrendoc.com/view/3cf46adc35b7f5ca2c9ec9948720c455/3cf46adc35b7f5ca2c9ec9948720c4551.gif)
![【移动应用开发技术】C#开发微信之如何实现菜单管理_第2页](http://file4.renrendoc.com/view/3cf46adc35b7f5ca2c9ec9948720c455/3cf46adc35b7f5ca2c9ec9948720c4552.gif)
![【移动应用开发技术】C#开发微信之如何实现菜单管理_第3页](http://file4.renrendoc.com/view/3cf46adc35b7f5ca2c9ec9948720c455/3cf46adc35b7f5ca2c9ec9948720c4553.gif)
![【移动应用开发技术】C#开发微信之如何实现菜单管理_第4页](http://file4.renrendoc.com/view/3cf46adc35b7f5ca2c9ec9948720c455/3cf46adc35b7f5ca2c9ec9948720c4554.gif)
![【移动应用开发技术】C#开发微信之如何实现菜单管理_第5页](http://file4.renrendoc.com/view/3cf46adc35b7f5ca2c9ec9948720c455/3cf46adc35b7f5ca2c9ec9948720c4555.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】C#开发微信之如何实现菜单管理
1、菜单的基础信息click:
用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为
event
的结构给开发者(参考消息接口指南),并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值与用户进行交互;
view:
用户点击view类型按钮后,微信客户端将会打开开发者在按钮中填写的url值
(即网页链接),达到打开网页的目的,建议与网页授权获取用户基本信息接口结合,获得用户的登入个人信息。
{
"button":[
{
"type":"click",
"name":"今日歌曲",
"key":"V1001_TODAY_MUSIC"
},
{
"type":"click",
"name":"歌手简介",
"key":"V1001_TODAY_SINGER"
},
{
"name":"菜单",
"sub_button":[
{
"type":"view",
"name":"搜索",
"url":"/"
},
{
"type":"view",
"name":"视频",
"url":"/"
},
{
"type":"click",
"name":"赞一下我们",
"key":"V1001_GOOD"
}]
}]
}2、菜单的实体类定义/upload/information/20201208/260/12876.jpg[JsonProperty(
NullValueHandling
=
NullValueHandling.Ignore)]///
<summary>
///
菜单基本信息
///
</summary>
public
class
MenuInfo
{
///
<summary>
///
按钮描述,既按钮名字,不超过16个字节,子菜单不超过40个字节
///
</summary>
public
string
name
{
get;
set;
}
///
<summary>
///
按钮类型(click或view)
///
</summary>
[JsonProperty(NullValueHandling
=
NullValueHandling.Ignore)]
public
string
type
{
get;
set;
}
///
<summary>
///
按钮KEY值,用于消息接口(event类型)推送,不超过128字节
///
</summary>
[JsonProperty(NullValueHandling
=
NullValueHandling.Ignore)]
public
string
key
{
get;
set;
}
///
<summary>
///
网页链接,用户点击按钮可打开链接,不超过256字节
///
</summary>
[JsonProperty(NullValueHandling
=
NullValueHandling.Ignore)]
public
string
url
{
get;
set;
}
///
<summary>
///
子按钮数组,按钮个数应为2~5个
///
</summary>
[JsonProperty(NullValueHandling
=
NullValueHandling.Ignore)]
public
List<MenuInfo>
sub_button
{
get;
set;
}
///
<summary>
///
参数化构造函数
///
</summary>
///
<param
name="name">按钮名称</param>
///
<param
name="buttonType">菜单按钮类型</param>
///
<param
name="value">按钮的键值(Click),或者连接URL(View)</param>
public
MenuInfo(string
name,
ButtonType
buttonType,
string
value)
{
=
name;
this.type
=
buttonType.ToString();
if
(buttonType
==
ButtonType.click)
{
this.key
=
value;
}
else
if(buttonType
==
ButtonType.view)
{
this.url
=
value;
}
}///
<summary>
///
参数化构造函数,用于构造子菜单
///
</summary>
///
<param
name="name">按钮名称</param>
///
<param
name="sub_button">子菜单集合</param>
public
MenuInfo(string
name,
IEnumerable<MenuInfo>
sub_button)
{
=
name;
this.sub_button
=
new
List<MenuInfo>();
this.sub_button.AddRange(sub_button);
}
///
<summary>
///
菜单的Json字符串对象
///
</summary>
public
class
MenuJson
{
public
List<MenuInfo>
button
{
get;
set;
}
public
MenuJson()
{
button
=
new
List<MenuInfo>();
}
}
///
<summary>
///
菜单列表的Json对象
///
</summary>
public
class
MenuListJson
{
public
MenuJson
menu
{
get;
set;
}
}3、菜单管理操作的接口实现
///
<summary>
///
菜单的相关操作
///
</summary>
public
interface
IMenuApi
{
///
<summary>
///
获取菜单数据
///
</summary>
///
<param
name="accessToken">调用接口凭证</param>
///
<returns></returns>
MenuJson
GetMenu(string
accessToken);
///
<summary>
///
创建菜单
///
</summary>
///
<param
name="accessToken">调用接口凭证</param>
///
<param
name="menuJson">菜单对象</param>
///
<returns></returns>
CommonResult
CreateMenu(string
accessToken,
MenuJson
menuJson);
///
<summary>
///
删除菜单
///
</summary>
///
<param
name="accessToken">调用接口凭证</param>
///
<returns></returns>
CommonResult
DeleteMenu(string
accessToken);
}///
<summary>
///
获取菜单数据
///
</summary>
///
<param
name="accessToken">调用接口凭证</param>
///
<returns></returns>
public
MenuJson
GetMenu(string
accessToken)
{
MenuJson
menu
=
null;
var
url
=
string.Format("/cgi-bin/menu/get?access_token={0}",
accessToken);
MenuListJson
list
=
JsonHelper<MenuListJson>.ConvertJson(url);
if
(list
!=
null)
{
menu
=
list.menu;
}
return
menu;
}private
void
btnGetMenuJson_Click(object
sender,
EventArgs
e)
{
IMenuApi
menuBLL
=
new
MenuApi();
MenuJson
menu
=
menuBLL.GetMenu(token);
if
(menu
!=
null)
{
Console.WriteLine(menu.ToJson());
}
}///
<summary>
///
创建菜单
///
</summary>
///
<param
name="accessToken">调用接口凭证</param>
///
<param
name="menuJson">菜单对象</param>
///
<returns></returns>
public
CommonResult
CreateMenu(string
accessToken,
MenuJson
menuJson)
{
var
url
=
string.Format("/cgi-bin/menu/create?access_token={0}",
accessToken);
string
postData
=
menuJson.ToJson();
return
Helper.GetExecuteResult(url,
postData);
}
///
<summary>
///
删除菜单
///
</summary>
///
<param
name="accessToken">调用接口凭证</param>
///
<returns></returns>
public
CommonResult
DeleteMenu(string
accessToken)
{
var
url
=
string.Format("/cgi-bin/menu/delete?access_token={0}",
accessToken);
return
Helper.GetExecuteResult(url);
}private
void
btnCreateMenu_Click(object
sender,
EventArgs
e)
{
MenuInfo
productInfo
=
new
MenuInfo("软件产品",
new
MenuInfo[]
{
new
MenuInfo("病人资料管理系统",
ButtonType.click,
"patient"),
new
MenuInfo("客户关系管理系统",
ButtonType.click,
"crm"),
new
MenuInfo("酒店管理系统",
ButtonType.click,
"hotel"),
new
MenuInfo("送水管理系统",
ButtonType.click,
"water")
});
MenuInfo
frameworkInfo
=
new
MenuInfo("框架产品",
new
MenuInfo[]
{
new
MenuInfo("Win开发框架",
ButtonType.click,
"win"),
new
MenuInfo("WCF开发框架",
ButtonType.click,
"wcf"),
new
MenuInfo("混合式框架",
ButtonType.click,
"mix"),
new
MenuInfo("Web开发框架",
ButtonType.click,
"web"),
new
MenuInfo("代码生成工具",
ButtonType.click,
"database2sharp")
});
MenuInfo
relatedInfo
=
new
MenuInfo("相关链接",
new
MenuInfo[]
{
new
MenuInfo("公司介绍",
ButtonType.click,
"Event_Company"),
new
MenuInfo("官方网站",
ButtonType.view,
""),
new
MenuInfo("提点建议",
ButtonType.click,
"Event
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届高中语文一轮复习学案24 命制错误选项的八大设误点(含答案)
- 现代企业管理中的决策科学
- 消费者行为与移动支付市场趋势研究
- 直播营销中流量转化的心理学应用
- 环保视角下的生物质废弃物商业模式变革
- 研发项目预算管理中的成本控制方法论
- 2023年江苏省徐州市中考地理真题(原卷版)
- 集体林地承包合同范本
- 企业国有资产无偿划转协议书范本
- 网络系统集成服务协议书(2篇)
- 技术支持资料投标书
- 山东省汽车维修工时定额(T-SDAMTIA 0001-2023)
- 初中数学深度学习与核心素养探讨
- 特殊教育导论 课件 第1-6章 特殊教育的基本概念-智力异常儿童的教育
- 2022年公务员多省联考《申论》题(四川县乡卷)
- 辞职申请表-中英文模板
- 公司管理培训《5S管理》精美课件
- 07J501-1钢雨篷玻璃面板图集
- 23J916-1:住宅排气道(一)
- 2023学年完整公开课版家乡的方言
- 浙江省温室气体清单编制指南
评论
0/150
提交评论