微信网页链接分享的API,及Weixin JS接口使用拾遗

风行水上 @ 2014-11-18 17:10:06
标签:

    微信是开放的吗,腾讯自己肯定说是。

    可是一个分享网页链接的API都要搜半天也找不到一个官方说法,那算就“开放”吗。

    关于分享网页链接,可以参见 分享网页链接到微信的“几种”方法

    客户端API

    如果不借助JavaScript的话:

    • 标题取自HTML代码中的title标签
    • 图片取自页面中得第一张“大”图
    • 页面内容简介为空

    这显然可控性不是很好:

    • 空的页面内容简介不好看
    • 比如页面本身不包含图片,但分享时希望包含一个图片以增加美观
    • 比如希望页面的URL是某一个入口页面

    目前综合查询总结下来,下面的代码经验证可以工作。使用的是被称为“Weixin JS接口”的东东。

    var lineLink    = 'http://../....';    // 要分享的页面的URL
    var imgUrl      = 'http://.../...';    // 显示在微信里的缩略图
    var shareTitle  = '页面标题';          // 页面标题
    var descContent = "页面内容简介";      // 内容简介
    var appid       = '';                  // APP ID, 可以为空
    
    
    function wx_shareFriend() {  
      WeixinJSBridge.invoke('sendAppMessage',{  
         "appid": appid,  
         "img_url": imgUrl,  
         "img_width": "640",  
         "img_height": "640",  
         "link": lineLink,  
         "desc": descContent,  
         "title": shareTitle  
         }, function(res) {  
           //alert(res.err_msg);  
         })  
    }  
    
    function wx_shareTimeline() {  
      WeixinJSBridge.invoke('shareTimeline',{  
        "img_url": imgUrl,  
        "img_width": "640",  
        "img_height": "640",  
        "link": lineLink,  
        "desc": descContent,  
        "title": shareTitle  
        }, function(res) {  
           //alert(res.err_msg);  
        });  
    }  
    
    function wx_shareWeibo() {  
      WeixinJSBridge.invoke('shareWeibo',{  
        "content": descContent,  
        "url": lineLink,  
        }, function(res) {  
          //alert(res.err_msg);  
        });  
    }  
    
    function onBridgeReady(){
      WeixinJSBridge.on('menu:share:appmessage', wx_shareFriend);   // 发送给朋友
      WeixinJSBridge.on('menu:share:timeline',   wx_shareTimeline); // 分享到朋友圈
      WeixinJSBridge.on('menu:share:weibo',      wx_shareWeibo);    // 分享到微博
    }
    
    if (typeof WeixinJSBridge == "undefined"){
      if( document.addEventListener ){
          document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
      }else if (document.attachEvent){
          document.attachEvent('WeixinJSBridgeReady', onBridgeReady); 
          document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
      }
    }else{
      onBridgeReady();
    }
    

    Weixin JS接口使用拾遗

    “Weixin JS接口”没有完整的公开文档(至少自己还没有通过公开渠道找到),只能零散记录整理如下。

    注册监听回调函数

    function onBridgeReady(){
      WeixinJSBridge.on('menu:share:appmessage', wx_shareFriend);  
      WeixinJSBridge.on('menu:share:timeline',   wx_shareTimeline);  
      WeixinJSBridge.on('menu:share:weibo',      wx_shareWeibo);
    }
    
    if (typeof WeixinJSBridge == "undefined"){
      if( document.addEventListener ){
          document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
      }else if (document.attachEvent){
          document.attachEvent('WeixinJSBridgeReady', onBridgeReady); 
          document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
      }
    }else{
      onBridgeReady();
    }
    

    隐藏网页右上角按钮

    WeixinJSBridge.call('hideOptionMenu');
    

    隐藏网页底部导航栏

    WeixinJSBridge.call('hideToolbar');
    

    关闭当前网页窗口

    WeixinJSBridge.invoke('closeWindow',{},function(res){
      // alert(res.err_msg);
    });
    

    获取当前网络链接类型

    WeixinJSBridge.invoke('getNetworkType',{},function(e){
      // WeixinJSBridge.log(e.err_msg);
    });
    
    标签:

      分享到:
      comments powered by Disqus

      33/37ms