亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
1、微信幾個(gè)功能的官方介紹
但請(qǐng)注意,以上新增能力,均僅支援微信iPhone5.4.1以上版本,和Android5.4以上版本的微信用戶,舊版微信用戶點(diǎn)擊後將沒有回應(yīng),開發(fā)者也不能正常接收到事件推送。
4、微信掃一掃功能集成?
5、新菜單功能測(cè)試發(fā)現(xiàn)的問題
首頁 微信小程式 微信開發(fā) C#開發(fā)微信入口網(wǎng)站及應(yīng)用程式(15)-微信選單增加掃一掃、發(fā)圖片、發(fā)地理位置功能

C#開發(fā)微信入口網(wǎng)站及應(yīng)用程式(15)-微信選單增加掃一掃、發(fā)圖片、發(fā)地理位置功能

Feb 18, 2017 am 09:14 AM

前面介紹了很多篇關(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、微信幾個(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). 彈出拍照或相簿發(fā)圖


用戶點(diǎn)擊按鈕後,微信用戶端將彈出選擇器供用戶選擇「拍照」或「從手機(jī)相簿選擇」。用戶選擇後即走其他兩種流程。


5). 彈出微信相簿發(fā)圖器


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


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


用戶點(diǎn)擊按鈕後,微信客戶端將調(diào)起地理位置選擇工具,完成選擇操作後,將選擇的地理位置發(fā)送給開發(fā)者的伺服器,同時(shí)收起位置選擇工具,隨後可能會(huì)收到開發(fā)者發(fā)出的訊息。

但請(qǐng)注意,以上新增能力,均僅支援微信iPhone5.4.1以上版本,和Android5.4以上版本的微信用戶,舊版微信用戶點(diǎn)擊後將沒有回應(yīng),開發(fā)者也不能正常接收到事件推送。

?

2、微信新選單功能的測(cè)試公眾號(hào)C#開發(fā)微信門戶及應(yīng)用(15)-微信菜單增加掃一掃、發(fā)圖片、發(fā)地理位置功能

微信不僅增加了這些功能模組的支持,還考慮到我們開發(fā)人員的方便,增加了一個(gè)叫做“menutest"的公眾號(hào),方便我們測(cè)試。我們?cè)诠娞?hào)搜尋「menutest",然後關(guān)注它即可進(jìn)行測(cè)試幾個(gè)新增功能了。

“menutest"的公眾號(hào)名稱是”自訂選單拓展測(cè)試“,我關(guān)注它並進(jìn)行了測(cè)試,二維碼、圖片、地理位置都很OK,本身能夠響應(yīng)這些事件,並且圖片、地理位置本身還能出現(xiàn)一個(gè)對(duì)應(yīng)的事件,如下圖所示。 C#開發(fā)微信門戶及應(yīng)用(15)-微信菜單增加掃一掃、發(fā)圖片、發(fā)地理位置功能 C#開發(fā)微信門戶及應(yīng)用(15)-微信菜單增加掃一掃、發(fā)圖片、發(fā)地理位置功能 圖片發(fā)送可以分為拍照、拍照和相簿、微信相簿三類,感覺後面兩個(gè)有點(diǎn)類似,但有這些功能都很不錯(cuò)的。

? ? ? ?

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

前面說了,微信提供這些功能,可以在菜單裡面進(jìn)行集成,也就是菜單的類型由原來CLICK/VIEW,變?yōu)楝F(xiàn)在8種菜單的類型由原來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裡面呼叫建立選單操作程式碼如下圖所示:


??
????????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://ipnx.cn/"),????????????????
????????????????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));
????????????}
????????}
????????????
????????///?<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);
????????}
????????????
????///?<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;?}

????}
??????

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

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

而在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í)體類用來處理他們的信息,如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;????????????????????????????????????if?(info?!=?null)
????????????????????????????????????{
????????????????????????????????????????responseContent?=?actionBLL.HandleEventPicSysphoto(info);
????????????????????????????????????}
????????????????????????????????}????????????????????????????????break;
..................


處理掃描結(jié)果并返回的最終代碼如下所示。


????????///?<summary>
????????///?掃碼推事件且彈出“消息接收中”提示框的事件推送的處理????????///?</summary>
????????///?<param name="info">掃描信息</param>
????????///?<returns></returns>
????????public?string?HandleEventScancodeWaitmsg(RequestEventScancodeWaitmsg?info)
????????{
????????????ResponseText?response?=?new?ResponseText(info);
????????????response.Content?=?string.Format("您的信息為:{0},可以結(jié)合后臺(tái)進(jìn)行數(shù)據(jù)查詢。",?info.ScanCodeInfo.ScanResult);????????????return?response.ToXml();
????????}


最后我們測(cè)試掃描一個(gè)條形碼,可以看到返回的結(jié)果界面操作如下所示。

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

?

5、新菜單功能測(cè)試發(fā)現(xiàn)的問題

前面介紹了一些新菜單功能模塊的集成,我個(gè)人對(duì)這種掃一掃菜單功能非常贊賞,這也是微信逐步整合更多硬件資源和接口處理的趨向,不過在集成使用的時(shí)候,發(fā)現(xiàn)公眾號(hào)偶爾出現(xiàn)閃退的情況,還有就是這些新功能雖然后臺(tái)能夠?qū)崿F(xiàn)數(shù)據(jù)的處理和接收,但是有一些不能返回應(yīng)答消息,很郁悶。也許隨著版本研發(fā)的加快,這些功能很快得到完善和解決。

另外微信開放平臺(tái)也投入使用了,好些認(rèn)證也是300元一年,不過暫時(shí)沒有其應(yīng)用的場(chǎng)景,我只是用到了它來獲取微信賬號(hào)的unionid的功能,其他功能慢慢了解吧。

還有就是微信的企業(yè)號(hào)也已經(jīng)出來了,而且我也已經(jīng)申請(qǐng)認(rèn)證通過,它的開發(fā)用戶的API也有不少,有空繼續(xù)研究并整合到微信開發(fā)框架里面吧。

?

更多C#開發(fā)微信門戶及應(yīng)用(15)-微信菜單增加掃一掃、發(fā)圖片、發(fā)地理位置功能?相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72