版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】C#開(kāi)發(fā)微信之如何實(shí)現(xiàn)菜單管理
1、菜單的基礎(chǔ)信息click:
用戶點(diǎn)擊click類(lèi)型按鈕后,微信服務(wù)器會(huì)通過(guò)消息接口推送消息類(lèi)型為
event
的結(jié)構(gòu)給開(kāi)發(fā)者(參考消息接口指南),并且?guī)习粹o中開(kāi)發(fā)者填寫(xiě)的key值,開(kāi)發(fā)者可以通過(guò)自定義的key值與用戶進(jìn)行交互;
view:
用戶點(diǎn)擊view類(lèi)型按鈕后,微信客戶端將會(huì)打開(kāi)開(kāi)發(fā)者在按鈕中填寫(xiě)的url值
(即網(wǎng)頁(yè)鏈接),達(dá)到打開(kāi)網(wǎng)頁(yè)的目的,建議與網(wǎng)頁(yè)授權(quán)獲取用戶基本信息接口結(jié)合,獲得用戶的登入個(gè)人信息。
{
"button":[
{
"type":"click",
"name":"今日歌曲",
"key":"V1001_TODAY_MUSIC"
},
{
"type":"click",
"name":"歌手簡(jiǎn)介",
"key":"V1001_TODAY_SINGER"
},
{
"name":"菜單",
"sub_button":[
{
"type":"view",
"name":"搜索",
"url":"/"
},
{
"type":"view",
"name":"視頻",
"url":"/"
},
{
"type":"click",
"name":"贊一下我們",
"key":"V1001_GOOD"
}]
}]
}2、菜單的實(shí)體類(lèi)定義/upload/information/20201208/260/12876.jpg[JsonProperty(
NullValueHandling
=
NullValueHandling.Ignore)]///
<summary>
///
菜單基本信息
///
</summary>
public
class
MenuInfo
{
///
<summary>
///
按鈕描述,既按鈕名字,不超過(guò)16個(gè)字節(jié),子菜單不超過(guò)40個(gè)字節(jié)
///
</summary>
public
string
name
{
get;
set;
}
///
<summary>
///
按鈕類(lèi)型(click或view)
///
</summary>
[JsonProperty(NullValueHandling
=
NullValueHandling.Ignore)]
public
string
type
{
get;
set;
}
///
<summary>
///
按鈕KEY值,用于消息接口(event類(lèi)型)推送,不超過(guò)128字節(jié)
///
</summary>
[JsonProperty(NullValueHandling
=
NullValueHandling.Ignore)]
public
string
key
{
get;
set;
}
///
<summary>
///
網(wǎng)頁(yè)鏈接,用戶點(diǎn)擊按鈕可打開(kāi)鏈接,不超過(guò)256字節(jié)
///
</summary>
[JsonProperty(NullValueHandling
=
NullValueHandling.Ignore)]
public
string
url
{
get;
set;
}
///
<summary>
///
子按鈕數(shù)組,按鈕個(gè)數(shù)應(yīng)為2~5個(gè)
///
</summary>
[JsonProperty(NullValueHandling
=
NullValueHandling.Ignore)]
public
List<MenuInfo>
sub_button
{
get;
set;
}
///
<summary>
///
參數(shù)化構(gòu)造函數(shù)
///
</summary>
///
<param
name="name">按鈕名稱</param>
///
<param
name="buttonType">菜單按鈕類(lèi)型</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>
///
參數(shù)化構(gòu)造函數(shù),用于構(gòu)造子菜單
///
</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字符串對(duì)象
///
</summary>
public
class
MenuJson
{
public
List<MenuInfo>
button
{
get;
set;
}
public
MenuJson()
{
button
=
new
List<MenuInfo>();
}
}
///
<summary>
///
菜單列表的Json對(duì)象
///
</summary>
public
class
MenuListJson
{
public
MenuJson
menu
{
get;
set;
}
}3、菜單管理操作的接口實(shí)現(xiàn)
///
<summary>
///
菜單的相關(guān)操作
///
</summary>
public
interface
IMenuApi
{
///
<summary>
///
獲取菜單數(shù)據(jù)
///
</summary>
///
<param
name="accessToken">調(diào)用接口憑證</param>
///
<returns></returns>
MenuJson
GetMenu(string
accessToken);
///
<summary>
///
創(chuàng)建菜單
///
</summary>
///
<param
name="accessToken">調(diào)用接口憑證</param>
///
<param
name="menuJson">菜單對(duì)象</param>
///
<returns></returns>
CommonResult
CreateMenu(string
accessToken,
MenuJson
menuJson);
///
<summary>
///
刪除菜單
///
</summary>
///
<param
name="accessToken">調(diào)用接口憑證</param>
///
<returns></returns>
CommonResult
DeleteMenu(string
accessToken);
}///
<summary>
///
獲取菜單數(shù)據(jù)
///
</summary>
///
<param
name="accessToken">調(diào)用接口憑證</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>
///
創(chuàng)建菜單
///
</summary>
///
<param
name="accessToken">調(diào)用接口憑證</param>
///
<param
name="menuJson">菜單對(duì)象</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">調(diào)用接口憑證</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("軟件產(chǎn)品",
new
MenuInfo[]
{
new
MenuInfo("病人資料管理系統(tǒng)",
ButtonType.click,
"patient"),
new
MenuInfo("客戶關(guān)系管理系統(tǒng)",
ButtonType.click,
"crm"),
new
MenuInfo("酒店管理系統(tǒng)",
ButtonType.click,
"hotel"),
new
MenuInfo("送水管理系統(tǒng)",
ButtonType.click,
"water")
});
MenuInfo
frameworkInfo
=
new
MenuInfo("框架產(chǎn)品",
new
MenuInfo[]
{
new
MenuInfo("Win開(kāi)發(fā)框架",
ButtonType.click,
"win"),
new
MenuInfo("WCF開(kāi)發(fā)框架",
ButtonType.click,
"wcf"),
new
MenuInfo("混合式框架",
ButtonType.click,
"mix"),
new
MenuInfo("Web開(kāi)發(fā)框架",
ButtonType.click,
"web"),
new
MenuInfo("代碼生成工具",
ButtonType.click,
"database2sharp")
});
MenuInfo
relatedInfo
=
new
MenuInfo("相關(guān)鏈接",
new
MenuInfo[]
{
new
MenuInfo("公司介紹",
ButtonType.click,
"Event_Company"),
new
MenuInfo("官方網(wǎng)站",
ButtonType.view,
""),
new
MenuInfo("提點(diǎn)建議",
ButtonType.click,
"Event
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度校園食堂承包運(yùn)營(yíng)服務(wù)合同范本4篇
- 2025年物業(yè)管理咨詢服務(wù)合同范本(含增值服務(wù))2篇
- 2025年度存量房買(mǎi)賣(mài)合同范本:房產(chǎn)交易流程規(guī)范文本4篇
- 針對(duì)2025年度重要活動(dòng)的現(xiàn)場(chǎng)布展合同2篇
- 二零二五版礦山工程設(shè)備采購(gòu)與安裝服務(wù)合同3篇
- 2025年度土地租賃合同終止及補(bǔ)償協(xié)議范本2篇
- 二零二五年度面包磚生產(chǎn)質(zhì)量保證合同4篇
- 2025版面包店員工培訓(xùn)與發(fā)展合同4篇
- 二零二五年度智能園藝管理合同規(guī)范模板4篇
- 年度系列自動(dòng)遙測(cè)氣象站戰(zhàn)略市場(chǎng)規(guī)劃報(bào)告
- 開(kāi)展課外讀物負(fù)面清單管理的具體實(shí)施舉措方案
- 2025年云南中煙工業(yè)限責(zé)任公司招聘420人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 《AM聚丙烯酰胺》課件
- 系統(tǒng)動(dòng)力學(xué)課件與案例分析
- 《智能網(wǎng)聯(lián)汽車(chē)智能傳感器測(cè)試與裝調(diào)》電子教案
- 客戶分級(jí)管理(標(biāo)準(zhǔn)版)課件
- 2023年江蘇省南京市中考化學(xué)真題
- 供電副所長(zhǎng)述職報(bào)告
- 校園欺凌問(wèn)題成因及對(duì)策分析研究論文
- 技術(shù)支持資料投標(biāo)書(shū)
- 老年人意外事件與與預(yù)防
評(píng)論
0/150
提交評(píng)論