在接下来讲解中,我还是先说下自己的思路方案,毕竟每人需求不一样,做法也不一样!!【我是先通过获取图文素材,来创建自定义菜单的】
1、进入菜单配置列表中心----展示的是我们已经配置好的菜单
1、那如果还没有菜单,列表放空,但是要有创建菜单按钮,提示授权用户自主创建菜单。
2、一开始还未做刷新图文模块的时候,我获取图文消息是在创建菜单的时候进行的。那么这个功能做好后,其实在创建自定义菜单就可以取消该步骤了,毕竟如果我在公众平台添加素材后,没地方刷新到本地,每次只能通过点击创建菜单来刷新不是很坑爹!!
在做菜单模块的时候,我先跳转到member/index?wx_id=xxx,然后记录session,可是不知道为什么接下来我定义的公共变量里头在去获取session的值,却老是时有时无的,最后我只能每个方法都传递参数已保证程序能正常运作!【题外话】
1、创建自定义菜单,微信文档还是要仔细看,该提示的也要提示好不要后期客户来反馈这也不行那也不行的。
重点在选择图文素材这里,我的做法是:
先去微信查找素材总数,存入到用户表,然后通过count在发送请求查找素材列表循环存入到自己的表里头。核心代码如下:
获取素材总数和列表api
以及永久素材实体类:
//永久图文素材类
public class ResponseGetNews : WxJsonResult
{
public int total_count { get; set;}//该类型的素材的总数
public int item_count { get; set;}//本次调用获取的素材的数量
public List<c_item> item { get; set;}
public DateTime update_time { get; set;}//这篇图文消息素材的最后更新时间
}
public class c_item
{
public string media_id { get; set;}
public c_news_item content { get;set;}
}
public class c_news_item
{
public List<c_news_article> news_item { get; set;}
}
public class c_news_article
{
//图文消息的标题
public string title { get; set;}
//图文消息的封面图片素材id
public string thumb_media_id { get; set;}
//是否显示封面,0为false,即不显示,1为true,即显示
public string show_cover_pic { get; set;}
//作者
public string author { get; set;}
//图文消息的摘要,仅有单图文消息才有摘要,多图文此处为空
public string digest { get; set;}
//图文消息的具体内容,支持HTML标签,必须少于2万字符,小于1M,且此处会去除JS
public string content { get; set;}
//图文页的URL,或者,当获取的列表是图片素材列表时,该字段是图片的URL
public string url { get; set;}
//图文消息的原文地址,即点击“阅读原文”后的URL
public string content_source_url { get; set;}
}
最后的最后,发布自定义菜单,这里需要注意,大神博客方法,都是传递data对象,如果你是要用这个方法,那么创建自定义菜单需要的参数得到这里设置,我为了代码明了点,直接吧所有数据拼接成str串,最后在方法里头添加了第二个参数,如果这个data对象不为空,那么首选就是我们在方法里头创建的这个data对象,否则选择自己传入的data2参数。
【例如:str="{
\"button\": [
{
\"type\": \"view_limited\",
\"name\": \"图文消息\",
\"media_id\": \"MEDIA_ID2\"
}
]
}"】
最终完成如下: