传说中的WeixinJSBridge和微信rest接口
通过关注微信好友 function WeiXinAddContact(wxid, cb) { if (typeof WeixinJSBridge == 'undefined') return false; WeixinJSBridge.invoke('addContact', { webtype: '1', username: wxid }, function(d) { // 返回d.err_msg取值,d还有一个属性是err_desc // add_contact:cancel 用户取消 // add_contact:fail 关注失败 // add_contact:ok 关注成功 // add_contact:added 已经关注 WeixinJSBridge.log(d.err_msg); cb && cb(d.err_msg); }); }; 通过微信分享 function WeiXinShareBtn() { if (typeof WeixinJSBridge == "undefined") { alert("请先通过微信xxxx"); } else { WeixinJSBridge.invoke('shareTimeline', { "title": "xxx", "link": "xxxx", "desc": "关注xxx", "img_url": "xxxx" }); } }
1. 上面的代码目前在微信内置浏览器才有效果
2. WeiXinAddContact中的微信wxid需要微信的原始id
例如商翼云的微信id:i3eyun,原始id:gh_b15f77615e32,
在iphone版本的微信中使用两种id都能完成正常的关注
但在android版本中如果使用i3eyun这个无法返回,一直停留在“正在关注。。。”,而修改成id:gh_b15f77615e32就正常了
3. 如果用户希望用户在打开页面的时候,直接能弹出关注的对话框
//init function r(f){(typeof WeixinJSBridge == 'undefined'||(typeof WeixinJSBridge.invoke == 'undefined'))?setTimeout('r('+f+')',200):f()} r(function(){ WeiXinAddContact("gh_b15f77615e32"); });
微信内置浏览器会有WeixinJSBridge,但是需要一定的加载时间,WeixinJSBridge 有了之后 WeixinJSBridge.invoke也不一定有,所有看到r这个函数了把。。。(ps:每次打开都弹多不好意思阿,所以需要通过cookie来控 制,WeiXinAddContact回调状态来设置cookie和通过cookie判断是否要执行init的部分的r)
//分享到朋友圈 function weixinShareTimeline(title,desc,link,imgUrl){ WeixinJSBridge.invoke('shareTimeline',{ "img_url":imgUrl, //"img_width":"640", //"img_height":"640", "link":link, "desc": desc, "title":title }); } //发送给好友 function weixinSendAppMessage(title,desc,link,imgUrl){ WeixinJSBridge.invoke('sendAppMessage',{ //"appid":appId, "img_url":imgUrl, //"img_width":"640", //"img_height":"640", "link":link, "desc":desc, "title":title }); } //分享到腾讯微博 function weixinShareWeibo(title,link){ WeixinJSBridge.invoke('shareWeibo',{ "content":title + link, "url":link }); } //关注指定的微信号 function weixinAddContact(name){ WeixinJSBridge.invoke("addContact", {webtype: "1",username: name}, function(e) { WeixinJSBridge.log(e.err_msg); //e.err_msg:add_contact:added 已经添加 //e.err_msg:add_contact:cancel 取消添加 //e.err_msg:add_contact:ok 添加成功 if(e.err_msg == 'add_contact:added' || e.err_msg == 'add_contact:ok'){ //关注成功,或者已经关注过 } }) }
1. 在微信内置浏览器中可以调用weixin协议链接直接查看某个微信号的资料,例如:
<a href="weixin://profile/gh_b15f77615e32">商翼云</a>
这里gh_xxxxxxxx就是用户的原始ID,注意,必须使用原始ID.
2. 分享到朋友圈:
function ShareTofriends(img_url,link,title,desc) { //在HTML页面内嵌入这一段JS代码 if(window.WeixinJSBridge){ if( typeof(img_url) == 'undefined' || img_url == ""){ var img_url = "xxxx"; } if( typeof(link) == 'undefined' || link == ""){ var img_url = window.location.href; } if ( typeof(title) == 'undefined' || title == "" ){ var title = '点开看一下吧!'; } if( typeof(desc) == 'undefined' || desc == ""){ var desc = "wendoscoo"; } WeixinJSBridge.invoke('shareTimeline',{ "img_url": img_url, //"img_width": "640", //"img_height": "640", "link": link, "desc": desc, "title": title },function(res){ // 返回res.err_msg,取值 // share_timeline:cancel 用户取消 // share_timeline:fail 发送失败 // share_timeline:ok 发送成功 WeixinJSBridge.log(res.err_msg); }); return false; } else{ alert("WeixinJSBridge对象不存在!!"); } };
然后同样使用一个a标签实现分享功能,加上onclick时间调用分享的JS函数就可以了
<a href="javascript:void(0);" onclick="ShareTOfriend('分享弹出窗的图片URL地址','分享的页面链接','分享弹出窗的标题','分享内容的描述')">分享到朋友圈</a>