




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 求职人员面试题及答案
- 航空航天复合材料 课件 知识点2 纳米复合材料
- 新疆村干部考试试题及答案
- 社会幼儿面试题及答案
- 中国烟草培训
- 2025年中国抛光块行业市场全景分析及前景机遇研判报告
- 醉酒窒息死亡病例分析
- 中班健康领域:会变暖的衣服
- 综合格斗培训
- 肿瘤登记质量控制
- 2023年国网山西省电力公司提前批招聘考试真题
- 《珍爱生命拒绝毒品》主题班会课件
- 墙布窗帘购销合同协议书
- 计算机网络的拓扑结构 教学课件
- 华为质量回溯(根因分析与纠正预防措施)模板
- 山东省烟台市牟平区(五四制)2023-2024学年八年级下学期期末语文试题(原卷版)
- 广东省广州市荔湾区统考2023-2024学年英语八下期末统考试题含答案
- 综合英语4智慧树知到答案2024年江西师范大学
- 《山区公路桥梁典型病害手册(试行)》
- 第四单元 神州音韵(四)-在那遥远的地方 教案 -2023-2024学年人教版初中音乐八年级下册
- 高三一轮复习作文主题训练:志向多样人生多彩
评论
0/150
提交评论