千家信息网

如何使用C#实现微信菜单增加扫一扫、发图片、发地理位置功能

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍如何使用C#实现微信菜单增加扫一扫、发图片、发地理位置功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、微信几个功能的官方介绍1). 扫码推送事件用户点击按
千家信息网最后更新 2026年11月01日如何使用C#实现微信菜单增加扫一扫、发图片、发地理位置功能

这篇文章主要介绍如何使用C#实现微信菜单增加扫一扫、发图片、发地理位置功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

1、微信几个功能的官方介绍

1). 扫码推送事件

用户点击按钮后,微信客户端将调起扫一扫工具,完成扫码操作后显示扫描结果(如果是URL,将进入URL),且会将扫码的结果传给开发者,开发者可以下发消息。

2). 扫码推送事件,且弹出"消息接收中"提示框

用户点击按钮后,微信客户端将调起扫一扫工具,完成扫码操作后,将扫码的结果传给开发者,同时收起扫一扫工具,然后弹出"消息接收中"提示框,随后可能会收到开发者下发的消息。

3). 弹出系统拍照发图

用户点击按钮后,微信客户端将调起系统相机,完成拍照操作后,将拍摄的相片发送给开发者,并推送事件给开发者,同时收起系统相机,随后可能会收到开发者下发的消息。

4). 弹出拍照或者相册发图

用户点击按钮后,微信客户端将弹出选择器供用户选择"拍照"或者"从手机相册选择"。用户选择后即走其他两种流程。

5). 弹出微信相册发图器

用户点击按钮后,微信客户端将调起微信相册,完成选择操作后,将选择的相片发送给开发者的服务器,并推送事件给开发者,同时收起相册,随后可能会收到开发者下发的消息。

6). 弹出地理位置选择器

用户点击按钮后,微信客户端将调起地理位置选择工具,完成选择操作后,将选择的地理位置发送给开发者的服务器,同时收起位置选择工具,随后可能会收到开发者下发的消息。
但请注意,以上新增能力,均仅支持微信iPhone5.4.1以上版本,和Android5.4以上版本的微信用户,旧版本微信用户点击后将没有回应,开发者也不能正常接收到事件推送。

2、微信新菜单功能的测试公众号

微信不仅增加了这些功能模块的支持,还考虑到我们开发人员的方便,增加了一个叫做"menutest"的公众号,方便我们测试。我们在公众号搜索"menutest",然后关注它即可进行测试几个新增功能了。

"menutest"的公众号名称是"自定义菜单拓展测试",我关注它并进行了测试,二维码、图片、地理位置都很OK,本身能够响应这些事件,并且图片、地理位置自身还能出现一个对应的事件,如下所示。

图片发送可以分为拍照、拍照和相册、微信相册三类,感觉后面两个有点类似,但有这些功能都很不错的。

3、改进菜单对象和提交菜单

前面说了,微信提供这些功能,可以在菜单里面进行集成,也就是菜单的类型由原来CLICK/VIEW两种,变为现在8种类型,增加2个扫码操作、3种图片操作、1种地理位置操作。

因此把菜单的枚举类型扩展一下,如下所示。

    ///     /// 菜单按钮类型    ///     public enum ButtonType    {        ///         /// 点击        ///         click,        ///         /// Url        ///         view,        ///         /// 扫码推事件的事件推送        ///         scancode_push,        ///         /// 扫码推事件且弹出"消息接收中"提示框的事件推送        ///         scancode_waitmsg,        ///         /// 弹出系统拍照发图的事件推送        ///         pic_sysphoto,        ///         /// 弹出拍照或者相册发图的事件推送        ///         pic_photo_or_album,        ///         /// 弹出微信相册发图器的事件推送        ///         pic_weixin,        ///         /// 弹出地理位置选择器的事件推送        ///         location_select    }

然后在Winform里面调用创建菜单操作代码如下所示:

        private void btnCreateMenu_Click(object sender, EventArgs e)        {            MenuJson productInfo = new MenuJson("新功能测试", new MenuJson[] {                 new MenuJson("扫码推事件", ButtonType.scancode_push, "scancode_push")                 ,new MenuJson("系统拍照发图", ButtonType.pic_sysphoto, "pic_sysphoto")                 , new MenuJson("拍照相册发图", ButtonType.pic_photo_or_album, "pic_photo_or_album")                 , new MenuJson("微信相册发图", ButtonType.pic_weixin, "pic_weixin")                 , new MenuJson("地理位置选择", ButtonType.location_select, "location_select")             });                                                MenuJson frameworkInfo = new MenuJson("框架产品", new MenuJson[] {                 new MenuJson("Win开发框架", ButtonType.click, "win"),                new MenuJson("WCF开发框架", ButtonType.click, "wcf"),                new MenuJson("混合式框架", ButtonType.click, "mix"),                 new MenuJson("Web开发框架", ButtonType.click, "web")                ,new MenuJson("代码生成工具", ButtonType.click, "database2sharp")            });            MenuJson relatedInfo = new MenuJson("相关链接", new MenuJson[] {                 new MenuJson("公司介绍", ButtonType.click, "event_company"),                new MenuJson("官方网站", ButtonType.view, "http://www.php.cn/"),                new MenuJson("联系我们", ButtonType.click, "event_contact"),                new MenuJson("应答系统", 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("您确认要创建菜单吗") == System.Windows.Forms.DialogResult.Yes)            {                IMenuApi menuBLL = new MenuApi();                CommonResult result = menuBLL.CreateMenu(token, menuJson);                Console.WriteLine("创建菜单:" + (result.Success ? "成功" : "失败:" + result.ErrorMessage));            }        }

当然,一般情况下我们都是在Web后台系统进行的,维护菜单都是在自己微信平台上进行菜单管理,然后一次性提交到微信服务器即可。

而在Web后台,只需要把数据库的数据变化为Json数据提交即可,操作和上面的类似。

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

4、微信扫一扫功能集成

前面讲了,有了最新的功能,我们就可以实现扫一扫功能,从而可以扫描条形码,二维码的功能。有了条形码、二维码的快速和识别,我们就能开发一些如条码查询、商品处理等功能了。

这里我们介绍如何在我的微信开发框架里面整合这个扫一扫的功能处理操作。

前面已经增加了一些新功能的测试菜单,我们要做的就是响应这些事件处理,然后对他们进行应答处理就可以了。

下面是根据事件进行的一些API跳转处理,我们同时定义了几个相关的实体类用来处理他们的信息,如RequestEventScancodePush、RequestEventScancodeWaitmsg、RequestEventPicSysphoto等等。

RequestEventScancodeWaitmsg实体类的代码如下所示,其他的类似处理。

    ///     /// 扫码推事件且弹出"消息接收中"提示框的事件推送    ///     [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();        }        ///         /// 事件KEY值,由开发者在创建菜单时设定        ///         public string EventKey { get; set; }        ///         /// 扫描信息        ///         public ScanCodeInfo ScanCodeInfo { get; set; }    }

而根据实体类强类型的处理接口流转操作如下所示。

RequestEventScancodePush info = XmlConvertor.XmlToObject(postStr, (RequestEventScancodePush))  (info != =                                    RequestEventScancodeWaitmsg info = XmlConvertor.XmlToObject(postStr, (RequestEventScancodeWaitmsg))  (info != =                                    RequestEventPicSysphoto info = XmlConvertor.XmlToObject(postStr, (RequestEventPicSysphoto))  (info != =;..................

处理扫描结果并返回的最终代码如下所示。

        ///         /// 扫码推事件且弹出"消息接收中"提示框的事件推送的处理        ///         /// 扫描信息        ///         public string HandleEventScancodeWaitmsg(RequestEventScancodeWaitmsg info)        {            ResponseText response = new ResponseText(info);            response.Content = string.Format("您的信息为:{0},可以结合后台进行数据查询。", info.ScanCodeInfo.ScanResult);            return response.ToXml();        }

以上是"如何使用C#实现微信菜单增加扫一扫、发图片、发地理位置功能"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

事件 开发 菜单 功能 开发者 推送 选择 位置 相册 地理 地理位置 消息 用户 处理 按钮 系统 测试 图片 客户 客户端 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 新华互联网科技 智能科技公司是互联网公司吗 美国互联网科技 顺玮阁互联网科技 天下捷融互联网科技 长亮科技互联网金融 大白互联网科技 科技大学互联网专业好不好 富国互联网科技创新基金 互联网科技实习生岗位职责 中国互联网公司排名锤子科技 洛阳共同富裕互联网科技有限公司 世界互联网领先科技成果获奖 深圳互联网科技的发展 城市宝互联网科技有限公司 福州德业互联网科技 吉林省码上互联网科技电话 互联网金融运营模式中的金融科技 银川新华互联网科技学校原画 10位科技互联网大佬 互联网高科技 合肥互联网科技公司 成都狮子座互联网科技 人人互联网科技是培训 温州喔噻互联网科技有限公司 崇明区互联网教育科技售后服务 唐山双旺合互联网科技产业园 互联网对科技影响 利用互联网等科技手段 如何强化互联网金融科技
0