微信大屏幕(一)
来源:互联网 发布:apache spark 安装 编辑:程序博客网 时间:2024/04/28 03:46
微信大屏幕技术会分几次写,包括微信上墙,微信投票,微信抽奖,微信摇一摇等。 这篇先扯微信上墙(PHP版)。
大概的思路其实也不难,流程如下:微信后台接收消息事件,关键词判断(如“我要上墙”),观众当前状态判断(是否处于上墙模式),存储用户的上墙内容,后台审核,通过审核并上墙。 下面分步详解微信上墙开发:
- 首先你要有自己的公众号,订阅号或服务号均可。不管你是使用开发框架还是没有,作为开发者的你应该已经知道腾讯会将用户消息和事件发送到你配置的服务器,你在该url指向的php文件中即可接收消息或事件。 在实现时,我是直接在该文件,这边我管它叫接口文件吧,进行关键词和状态判断并进行存表操作。参考代码如下:
$mem=M('member'); $oMap['openid']=$data['FromUserName']; //获取用户的当前的状态 $w_status=$mem->where($oMap)->getField('status'); //三个判断进行用户的上墙信息表的建立 //判断当前的用户状态,看是否处于上墙模式,如果满足则存储该消息 if(!$w_status&&$data['Content']!="退出"){ $follows=M('follows'); $data['contents']=$data['Content']; $data['openid']=$data['FromUserName']; $ctime=date('Y-m-d H:i:s',$data['CreateTime']); $data['ctime']=$ctime; //获取用户信息,相关函数属于自己写的封装函数,可根据自己的情况获取 $token = get_token(); $openid = get_openid(); $userinfo = getWeixinUserInfo($openid, $token); $headPic = $userinfo['headimgurl']; $data['headimge']=$headPic; $data['nickname']=$userinfo['nickname']; $follows->add($data); $weixin->replyText("您的信息我们已经收到,待审核后即可上墙,回复【退出】离开上墙模式"); } if(preg_match('/我要上墙/i',$data['Content'])){ // preg_match('/\#微唱\#(.+)/i',$data['Content'], $matchs); // $oMap['openid']=$data['FromUserName']; $data['status']=0; $mem->where($oMap)->save($data); $articles[0] = array( "Title" => "进入上墙模式,回复【退出】,离开上墙模式", "Description" => "小伙伴们嗨起来,让全场听到你的声音,更有神秘大奖哦~~", "PicUrl" => "", "Url" => "", ); $weixin->replyNews($articles); } if(preg_match('/退出/i',$data['Content'])){ $data['status']=1; $mem->where($oMap)->save($data); $articles[0] = array( "Title" => "已成功退出上墙模式,回复【我要上墙】,进入上墙模式", "Description" => "欢迎再次加入我们的讨论哦!!~~", "PicUrl" => "", "Url" => "", ); $weixin->replyNews($articles); }
- 现在我们已经有自己 的上墙信息表,并只要有新的用户发送上墙信息,都会记录下来,接下来要做的就是从表中读取相关信息,并进行上墙。在这里为了能实现上墙的动态效果,即没隔一段时间自动刷出一条审核通过的信息。 在我们审核通过一条信息时,我们将存上墙信息表的exam字段做标记,在ajax向后台请求上墙信息时,将相应的审核通过的信息传到前台即可。 相关的后台php响应参考代码如下:
$wall=M('follows'); $start=I('get.lastid'); $lastid=$start+1; $info=$wall->where('exam=1')->order('id Asc')->limit($start.',1')->select(); $data[$lastid]['id'] = $info[0]['id']; // $data[$lastid]['fakeid'] = $info[0]['fake_id']; $data[$lastid]['num'] = $lastid; $data[$lastid]['content'] = $info[0]['contents']; $data[$lastid]['nickname'] = $info[0]['nickname']; $data[$lastid]['id'] = $info[0]['id']; if(count($info)==0){ $data2=array('data'=>$data,'ret'=>0); $this->ajaxReturn($data2,'JSON'); } else{ $data2=array('data'=>$data,'ret'=>1); $this->ajaxReturn($data2,'JSON'); } }
- 这样我们有了要上墙的数据,离实现上墙就不远啦~~最后要做的就如如何利用js等将上墙内容动态的表现出来。在这里,我是将后台传过来的上墙信息嵌入到html代码中,在利用定时器函数,每隔一段时间自动检测是否有新的审核通过的上墙信息,如果有,就利用slidedown函数将新信息下拉刷新到大屏幕,参考代码如下:
function messageAdd(){ if(cur==len) { messageData(); return false; } if(data.length != 0){ if(data[cur][1]==""){ data[cur][1]=""; } var str='<li id=li'+cur+' onclick="viewOne('+cur+',this);"><div class=m1><div class=m2><div class="pic"><img src="" width="100" height="100" /></div><div class="c f2"><span>'+data[cur][2]+':</span>'+data[cur][3]+'</div></div></div></li>'; $("#list").prepend(str); $("#li"+cur).slideDown(800); cur++; } messageData(); }function messageData(){ //ajax实现从后台获取上墙信息 var url='__URL__/wallmessage'; $.getJSON(url,{lastid:lastid},function(d) { // alert(d);return; if(d['ret']==1) { $.each(d['data'], function(i,v){ data.push(new Array(v['num'],v['id'],v['nickname'],v['content'])); lastid=v['num']; len++; }); }else{ // alert('没消息,每隔5秒ajax一次'); window.setTimeout('messageData();', 2000); } });}window.onload=function(){ messageAdd(); mtime=setInterval(messageAdd,3000); }
至此微信上墙功能已实现,怎样,是不是很简单。 关键步骤就是建表,读表,效果实现~~~
有任何疑问欢迎留言哈
0 0
- 微信大屏幕(一)
- PHP多线程SOCKET协议实现微信大屏幕摇一摇互动
- XSuperMES移动端运用FragmentActivity适配大屏幕(一)
- 微信签到,弹幕在微信大屏幕上的实现
- 微信开发(一)
- 微信支付(一)
- 微信支付(一)
- 打通微信(一)
- 微信公众平台开发(一)
- (一)验证微信公众平台
- (一)验证微信公众平台
- 《微信思维》摘录(一)
- 微信支付方式集成(一)
- 微信开发流程梳理(一)
- 微信公众平台开发(一)
- 微信开发杂谈(一)
- 微信公众开发基础(一)
- 微信开发平台(一)
- c++ 28 map
- POJ 1083 Moving Tables(贪心!!)
- 静态库
- SQL 中的 图 树 层次结构[转自http://blog.csdn.net/feixianxxx/article/details/4753783]
- Cocos2d-x 3.2 android平台新手开发环境配置教程
- 微信大屏幕(一)
- Android API Level与sdk版本对照表
- jquery,js代码摘要
- 图论 邻接链表存储 BFS DFS 拓扑排序 最小生成树 KRUSKAL PRIM
- c语言小游戏 贪吃蛇
- VIM 命令集锦
- ACE线程管理机制
- Android Card Filp Animations
- Intellij IDEA maven clean失败