Il n'y a pas si longtemps, WeChat a lancé une interface de menu personnalisée et le SDK Senparc.Weixin a également été mis à jour simultanément.
Cette mise à jour met à niveau la version Senparc.Weixin.MP vers la v13.5.2, qui dépend de la version Senparc.Weixin 4.5.4. Les deux branches de .NET4.5(master) / .NET4.0 ont été mises à jour simultanément.
En raison des changements importants apportés au menu personnalisé, toute l'interface du menu a été reconstruite dans la plus grande zone jusqu'à présent (elle peut être rétrocompatible).
Par rapport au menu personnalisé précédent, les fonctions actuelles liées au menu ont été entièrement organisées en fonction de la structure du fichier :
Les interfaces de menu ont toutes été classées dans le répertoire CommonAPIs/Menu. Il y a 3 fichiers de classe sous la section CommonApi :
文件名 | 说明 |
CommonApi.Menu.Common.cs | 菜单公共方法 |
CommonApi.Menu.Conditional.cs | 个性化菜单 |
CommonApi.Menu.Custom.cs | 普通自定义菜单 |
Fichier d'interface de menu
L'interface du menu personnalisé a été assurée pour être rétrocompatible. S'il existe des projets qui ont développé des fonctions de menu personnalisées dans le passé, vous pouvez mettre à niveau en toute confiance. Le contenu de la classe menu personnalisé est le suivant :/*---------------------------------------------------------------- Copyright (C) 2015 Senparc 文件名:CommonApi.Menu.Conditional 文件功能描述:个性化自定义菜单接口 创建标识:Senparc - 20151222 修改标识:Senparc - 20151222 修改描述:v13.5.1 添加个性化菜单接口 ----------------------------------------------------------------*/ /* API:http://mp.weixin.qq.com/wiki/0/c48ccd12b69ae023159b4bfaa7c39c20.html */ using Senparc.Weixin.Entities; using Senparc.Weixin.Helpers; using Senparc.Weixin.MP.Entities; using Senparc.Weixin.MP.Entities.Menu; namespace Senparc.Weixin.MP.CommonAPIs { public partial class CommonApi { /// <summary> /// 创建个新华菜单 /// </summary> /// <param name="accessTokenOrAppId">AccessToken或AppId。当为AppId时,如果AccessToken错误将自动获取一次。当为null时,获取当前注册的第一个AppId。</param> /// <param name="buttonData">菜单内容</param> /// <returns></returns> public static CreateMenuConditionalResult CreateMenuConditional(string accessTokenOrAppId, ConditionalButtonGroup buttonData, int timeOut = Config.TIME_OUT) { return ApiHandlerWapper.TryCommonApi(accessToken => { var urlFormat = "https://api.weixin.qq.com/cgi-bin/menu/addconditional?access_token={0}"; var jsonSetting = new JsonSetting(true); return CommonJsonSend.Send<CreateMenuConditionalResult>(accessToken, urlFormat, buttonData, timeOut: timeOut, jsonSetting: jsonSetting); }, accessTokenOrAppId); } #region GetMenu /* 使用普通自定义菜单查询接口可以获取默认菜单和全部个性化菜单信息,请见自定义菜单查询接口的说明 */ /// <summary> /// 测试个性化菜单匹配结果 /// </summary> /// <param name="accessTokenOrAppId"></param> /// <param name="userId">可以是粉丝的OpenID,也可以是粉丝的微信号。</param> /// <returns></returns> public static MenuTryMatchResult TryMatch(string accessTokenOrAppId, string userId) { return ApiHandlerWapper.TryCommonApi(accessToken => { var url = string.Format("https://api.weixin.qq.com/cgi-bin/menu/delconditional?access_token={0}", accessToken); var data = new { user_id = userId }; return CommonJsonSend.Send<MenuTryMatchResult>(accessToken, url, data, CommonJsonSendType.POST); }, accessTokenOrAppId); } #endregion /// <summary> /// 删除菜单 /// </summary> /// <param name="accessTokenOrAppId"></param> /// <param name="menuId">菜单Id</param> /// <returns></returns> public static WxJsonResult DeleteMenuConditional(string accessTokenOrAppId, string menuId) { return ApiHandlerWapper.TryCommonApi(accessToken => { var url = string.Format("https://api.weixin.qq.com/cgi-bin/menu/delconditional?access_token={0}", accessToken); var data = new { menuId = menuId }; return CommonJsonSend.Send(accessToken, url, data, CommonJsonSendType.POST); }, accessTokenOrAppId); } /* 使用普通自定义菜单删除接口可以删除所有自定义菜单(包括默认菜单和全部个性化菜单),请见自定义菜单删除接口的说明。 */ } }
Remarques