国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

C#開發(fā)微信門戶及應(yīng)用(15)-微信菜單增加掃一掃、發(fā)圖片、發(fā)地理位置功能

2019-11-17 02:52:15
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

C#開發(fā)微信門戶及應(yīng)用(15)-微信菜單增加掃一掃、發(fā)圖片、發(fā)地理位置功能

前面介紹了很多篇關(guān)于使用C#開發(fā)微信門戶及應(yīng)用的文章,基本上把當(dāng)時(shí)微信能做的接口都封裝差不多了,微信框架也積累了不少模塊和用戶,最近發(fā)現(xiàn)微信公眾平臺(tái)增加了不少內(nèi)容,特別是在自定義菜單里面增加了掃一掃、發(fā)圖片、發(fā)地理位置功能,這幾個(gè)功能模塊很重要,想想以前想在微信公眾號(hào)里面增加一個(gè)掃描二維碼的功能,都做不了,現(xiàn)在可以了,還可以拍照上傳等功能,本文主要介紹基于我前面的框架系列文章,進(jìn)一步介紹如何集成和使用這些新增功能。

1、微信幾個(gè)功能的官方介紹

1). 掃碼推送事件

用戶點(diǎn)擊按鈕后,微信客戶端將調(diào)起掃一掃工具,完成掃碼操作后顯示掃描結(jié)果(如果是URL,將進(jìn)入U(xiǎn)RL),且會(huì)將掃碼的結(jié)果傳給開發(fā)者,開發(fā)者可以下發(fā)消息。

2). 掃碼推送事件,且彈出“消息接收中”提示框

用戶點(diǎn)擊按鈕后,微信客戶端將調(diào)起掃一掃工具,完成掃碼操作后,將掃碼的結(jié)果傳給開發(fā)者,同時(shí)收起掃一掃工具,然后彈出“消息接收中”提示框,隨后可能會(huì)收到開發(fā)者下發(fā)的消息。

3). 彈出系統(tǒng)拍照發(fā)圖

用戶點(diǎn)擊按鈕后,微信客戶端將調(diào)起系統(tǒng)相機(jī),完成拍照操作后,將拍攝的相片發(fā)送給開發(fā)者,并推送事件給開發(fā)者,同時(shí)收起系統(tǒng)相機(jī),隨后可能會(huì)收到開發(fā)者下發(fā)的消息。

4). 彈出拍照或者相冊(cè)發(fā)圖

用戶點(diǎn)擊按鈕后,微信客戶端將彈出選擇器供用戶選擇“拍照”或者“從手機(jī)相冊(cè)選擇”。用戶選擇后即走其他兩種流程。

5). 彈出微信相冊(cè)發(fā)圖器

用戶點(diǎn)擊按鈕后,微信客戶端將調(diào)起微信相冊(cè),完成選擇操作后,將選擇的相片發(fā)送給開發(fā)者的服務(wù)器,并推送事件給開發(fā)者,同時(shí)收起相冊(cè),隨后可能會(huì)收到開發(fā)者下發(fā)的消息。

6). 彈出地理位置選擇器

用戶點(diǎn)擊按鈕后,微信客戶端將調(diào)起地理位置選擇工具,完成選擇操作后,將選擇的地理位置發(fā)送給開發(fā)者的服務(wù)器,同時(shí)收起位置選擇工具,隨后可能會(huì)收到開發(fā)者下發(fā)的消息。但請(qǐng)注意,以上新增能力,均僅支持微信

“menutest"的公眾號(hào)名稱是”自定義菜單拓展測(cè)試“,我關(guān)注它并進(jìn)行了測(cè)試,二維碼、圖片、地理位置都很OK,本身能夠響應(yīng)這些事件,并且圖片、地理位置自身還能出現(xiàn)一個(gè)對(duì)應(yīng)的事件,如下所示。

圖片發(fā)送可以分為拍照、拍照和相冊(cè)、微信相冊(cè)三類,感覺后面兩個(gè)有點(diǎn)類似,但有這些功能都很不錯(cuò)的。

3、改進(jìn)菜單對(duì)象和提交菜單

前面說(shuō)了,微信提供這些功能,可以在菜單里面進(jìn)行集成,也就是菜單的類型由原來(lái)CLICK/VIEW兩種,變?yōu)楝F(xiàn)在8種類型,增加2個(gè)掃碼操作、3種圖片操作、1種地理位置操作。

因此把菜單的枚舉類型擴(kuò)展一下,如下所示。

    /// <summary>    /// 菜單按鈕類型    /// </summary>    public enum ButtonType    {        /// <summary>        /// 點(diǎn)擊        /// </summary>        click,        /// <summary>        /// Url        /// </summary>        view,        /// <summary>        /// 掃碼推事件的事件推送        /// </summary>        scancode_push,        /// <summary>        /// 掃碼推事件且彈出“消息接收中”提示框的事件推送        /// </summary>        scancode_waitmsg,        /// <summary>        /// 彈出系統(tǒng)拍照發(fā)圖的事件推送        /// </summary>        pic_sysphoto,        /// <summary>        /// 彈出拍照或者相冊(cè)發(fā)圖的事件推送        /// </summary>        pic_photo_or_album,        /// <summary>        /// 彈出微信相冊(cè)發(fā)圖器的事件推送        /// </summary>        pic_weixin,        /// <summary>        /// 彈出地理位置選擇器的事件推送        /// </summary>        location_select    }

然后在Winform里面調(diào)用創(chuàng)建菜單操作代碼如下所示:

        PRivate void btnCreateMenu_Click(object sender, EventArgs e)        {            MenuJson productInfo = new MenuJson("新功能測(cè)試", new MenuJson[] {                 new MenuJson("掃碼推事件", ButtonType.scancode_push, "scancode_push")                 ,new MenuJson("系統(tǒng)拍照發(fā)圖", ButtonType.pic_sysphoto, "pic_sysphoto")                 , new MenuJson("拍照相冊(cè)發(fā)圖", ButtonType.pic_photo_or_album, "pic_photo_or_album")                 , new MenuJson("微信相冊(cè)發(fā)圖", ButtonType.pic_weixin, "pic_weixin")                 , new MenuJson("地理位置選擇", ButtonType.location_select, "location_select")             });                                                MenuJson frameworkInfo = new MenuJson("框架產(chǎn)品", new MenuJson[] {                 new MenuJson("Win開發(fā)框架", ButtonType.click, "win"),                new MenuJson("WCF開發(fā)框架", ButtonType.click, "wcf"),                new MenuJson("混合式框架", ButtonType.click, "mix"),                 new MenuJson("Web開發(fā)框架", ButtonType.click, "web")                ,new MenuJson("代碼生成工具", ButtonType.click, "database2sharp")            });            MenuJson relatedInfo = new MenuJson("相關(guān)鏈接", new MenuJson[] {                 new MenuJson("公司介紹", ButtonType.click, "event_company"),                new MenuJson("官方網(wǎng)站", ButtonType.view, "http://www.iqidi.com"),                new MenuJson("聯(lián)系我們", ButtonType.click, "event_contact"),                new MenuJson("應(yīng)答系統(tǒng)", ButtonType.click, "set-1"),                new MenuJson("人工客服", ButtonType.click, "event_customservice")            });            MenuListJson menuJson = new MenuListJson();            menuJson.button.AddRange(new MenuJson[] { productInfo, frameworkInfo, relatedInfo });            if (MessageUtil.ShowYesNoAndWarning("您確認(rèn)要?jiǎng)?chuàng)建菜單嗎") == System.Windows.Forms.DialogResult.Yes)            {                IMenuApi menuBLL = new MenuApi();                CommonResult result = menuBLL.CreateMenu(token, menuJson);                Console.WriteLine("創(chuàng)建菜單:" + (result.Success ? "成功" : "失敗:" + result.ErrorMessage));            }        }

當(dāng)然,一般情況下我們都是在Web后臺(tái)系統(tǒng)進(jìn)行的,維護(hù)菜單都是在自己微信平臺(tái)上進(jìn)行菜單管理,然后一次性提交到微信服務(wù)器即可。

而在Web后臺(tái),只需要把數(shù)據(jù)庫(kù)的數(shù)據(jù)變化為Json數(shù)據(jù)提交即可,操作和上面的類似。

        /// <summary>        ///更新微信菜單        /// </summary>        /// <returns></returns>        public ActionResult UpdateWeixinMenu()        {            string token = base.GetaccessToken();            MenuListJson menuJson = GetWeixinMenu();            IMenuApi menuApi = new MenuApi();            CommonResult result = menuApi.CreateMenu(token, menuJson);            return ToJsonContent(result);        }

4、微信掃一掃功能集成

前面講了,有了最新的功能,我們就可以實(shí)現(xiàn)掃一掃功能,從而可以掃描條形碼,二維碼的功能。有了條形碼、二維碼的快速和識(shí)別,我們就能開發(fā)一些如條碼查詢、商品處理等功能了。

這里我們介紹如何在我的微信開發(fā)框架里面整合這個(gè)掃一掃的功能處理操作。

前面已經(jīng)增加了一些新功能的測(cè)試菜單,我們要做的就是響應(yīng)這些事件處理,然后對(duì)他們進(jìn)行應(yīng)答處理就可以了。

下面是根據(jù)事件進(jìn)行的一些API跳轉(zhuǎn)處理,我們同時(shí)定義了幾個(gè)相關(guān)的實(shí)體類用來(lái)處理他們的信息,如RequestEventScancodePush、RequestEventScancodeWaitmsg、RequestEventPicSysphoto等等。

RequestEventScancodeWaitmsg實(shí)體類的代碼如下所示,其他的類似處理。

    /// <summary>    /// 掃碼推事件且彈出“消息接收中”提示框的事件推送    /// </summary>    [System.xml.Serialization.XmlRoot(ElementName = "xml")]    public class RequestEventScancodeWaitmsg : BaseEvent    {        public RequestEventScancodeWaitmsg()        {            this.MsgType = RequestMsgType.Event.ToString().ToLower();            this.Event = RequestEvent.scancode_waitmsg.ToString();            this.ScanCodeInfo = new ScanCodeInfo();        }        /// <summary>        /// 事件KEY值,由開發(fā)者在創(chuàng)建菜單時(shí)設(shè)定        /// </summary>        public string EventKey { get; set; }        /// <summary>        /// 掃描信息        /// </summary>        public ScanCodeInfo ScanCodeInfo { get; set; }    } 

而根據(jù)實(shí)體類強(qiáng)類型的處理接口流轉(zhuǎn)操作如下所示。

                               case RequestEvent.scancode_push:                                {                                    //掃碼推事件的事件推送                                    RequestEventScancodePush info = XmlConvertor.XmlToObject(postStr, typeof(RequestEventScancodePush)) as RequestEventScancodePush;                                    if (info != null)                                    {                                        responseContent = actionBLL.HandleEventScancodePush(info);                                    }                                }                                break;                            case RequestEvent.scancode_waitmsg:                                {                                    //掃碼推事件且彈出“消息接收中”提示框的事件推送                                    RequestEventScancodeWaitmsg info = XmlConvertor.XmlToObject(postStr, typeof(RequestEventScancodeWaitmsg)) as RequestEventScancodeWaitmsg;                                    if (info != null)                                    {                                        responseContent = actionBLL.HandleEventScancodeWaitmsg(info);                                    }                                }                                break;                            case RequestEvent.pic_sysphoto:                                {                                    //彈出系統(tǒng)拍照發(fā)圖的事件推送                                    RequestEventPicSysphoto info = XmlConvertor.XmlToObject(postStr, typeof(RequestEventPicSysphoto)) as RequestEventPicSysphoto;
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 云霄县| 红安县| 格尔木市| 太仆寺旗| 三门县| 云阳县| 儋州市| 金坛市| 双流县| 襄城县| 安化县| 望谟县| 墨竹工卡县| 舟曲县| 罗平县| 灵川县| 土默特左旗| 浠水县| 荃湾区| 紫阳县| 水富县| 迁安市| 鹤壁市| 西乌| 徐州市| 通江县| 石棉县| 梁平县| 通城县| 新蔡县| 渝中区| 镇康县| 平昌县| 平湖市| 奉贤区| 阿拉善右旗| 安塞县| 枝江市| 桃园市| 榆中县| 江北区|