[h5+api]移动app开发用到的微信好友,朋友圈,qq好友,新浪微博分享合集

适用H5+环境,能够使用plus方法的移动app中

/**
 * Created by HBuilder.
 * User: tyx
 * Date: 2018-11-21
 * Time: 17:28:51
 */

/**
 * 初始化分享服务
 */
//---------------H5 plus事件处理
function plusReady(){
    updateSerivces();   //更新分享服务
}
if(window.plus){
    plusReady();
}else{
    document.addEventListener('plusready', plusReady, false);
}
/**
 * 更新分享服务
 */
var shares=null;
var sweixin=null;   //微信分享
var sqq=null;        //QQ分享
var sweibo=null;    //新浪微博分享
//------------获取服务列表
function updateSerivces(){
    plus.share.getServices(function(s){
        shares={};
        for(var i in s){
            var t=s[i];
            shares[t.id]=t;
        }
        console.log(shares);
        sweixin=shares['weixin'];
        sqq=shares['qq'];
        sweibo=shares['sinaweibo'];
    }, function(e){
        console.log('获取分享服务列表失败:'+e.message);
    });
}
/**
 * 调用分享函数
 */
/**
 * 分享时传入的必要参数
 * @param  {string}     web_state       分享类型(weixin 微信;qq qq分享;weibo 微博分享)
 * @param  {function}   web_success       成功回调
 * @param  {function}   web_error       失败回调
 * @param  {string}     web_href           分享链接
 * @param  {string}     web_title       分享标题
 * @param  {string}     web_content     分享描述(选填)
 * @param  {string}     weixin_bottons  分享微信渠道(分享微信时必填)(contancts 我的好友;moments 朋友圈)
 * @param  {string}     weixin_pic        分享微信logo图(选填)
 * @param  {string}     weibo_pic       分享微博图片地址(分享微博时选填)
 * @param  {string}     weibo_call       分享时@微博用户(选填)
 * @return {string}            
 */
//-------------传入分享讯息
function changeShare(web_state,web_success,web_error,web_href,web_title,web_content,weixin_buttons,weixin_pic,weibo_pic,weibo_call,web_true,web_false){
    //分享完毕后的回调函数判断
    if(typeof web_success === "function") {
        var web_true=web_success;
    }else{
        var web_true=function(){console.log("----发表成功------")};
    }
    if(typeof web_error === "function") {
        var web_false=web_error;
    }else{
        var web_false=function(){console.log("----发表失败------")};
    }
    if(!web_state){
        return "分享类型参数不全,缺少web_state";
    }
    if(web_state == 'weixin'){
        //验证参数完整性
        if(!web_href || !web_title || !weixin_buttons){
            return "微信分享缺少必要参数,web_href web_title weixin_buttons";
        }
        //微信分享渠道
        if(weixin_buttons == "contancts"){
            var web_buttons={title:'我的好友',extra:{scene:'WXSceneSession'}};
        }else if(weixin_buttons == "moments"){
            var web_buttons={title:'朋友圈',extra:{scene:'WXSceneTimeline'}};
        }else{
            return "微信分享参数有误,weixin_buttons";
        }
        //调用微信分享函数
        sweixin_shareWeb(web_href,web_title,web_content,web_buttons,weixin_pic,web_true,web_false);//调用微信分享功能
    }else if(web_state == "qq"){
        //验证参数完整性
        if(!web_href || !web_title){
            plus.nativeUI.alert('qq分享缺少必要参数,web_href web_title');
            return "qq分享缺少必要参数,web_href web_title";
        }
        //调用qq分享函数
        sqq_shareText(web_href,web_title,web_content,web_true,web_false);
        
    }else if(web_state == "weibo"){
        if(!web_title){
            return "微博分享缺少必要参数,web_title";
        }
        if(!weibo_call){
            weibo_call='';
        }
        if(!weibo_pic){
            weibo_pic='';
        }
        sweibo_shareImage(web_href,web_title,weibo_pic,weibo_call,web_true,web_false);//调用微博分享功能
    }
}

/**
 * 处理分享方向
 */
//-----------微信分享
// 分享网页
function sweixin_shareWeb(web_href,web_title,web_content,web_buttons,weixin_pic,web_true,web_false){
  var sweixin_msg={type:'web',thumbs:[weixin_pic]};
  sweixin_msg.href=web_href;
  sweixin_msg.title=web_title;
  sweixin_msg.content=web_content;
  sweixin?share(sweixin, sweixin_msg, web_buttons,web_true,web_false):plus.nativeUI.alert('当前环境不支持微信分享操作!'); 
}
//-----------QQ分享
// 分享文本 
function sqq_shareText(web_href,web_title,web_content,web_true,web_false){

  var sqq_msg={type:'text'};
  sqq_msg.title=web_title;
  sqq_msg.content=web_content;
  sqq_msg.href=web_href;
  sqq?share(sqq,sqq_msg,'',web_true,web_false):plus.nativeUI.alert('当前环境不支持QQ分享操作!');
}
//-----------微博分享
// 分享图片
function sweibo_shareImage(web_href,web_title,weibo_pic,weibo_call,web_true,web_false){
  var sweibo_msg={type:'image'};
  if(web_href){
      sweibo_msg.content=web_title+' '+weibo_call+' 链接地址是'+web_href;
  }else{
      sweibo_msg.content=web_title+' '+weibo_call;
  }
  sweibo_msg.pictures=[weibo_pic];
  sweibo?share(sweibo, sweibo_msg,'',web_true,web_false):plus.nativeUI.alert('当前环境不支持新浪微博分享操作!');
}

/**
 * 链接分享渠道
 */
//-----------------分享
function share(srv,msg,button,web_true,web_false){
    console.log('分享操作:');
  if(!srv){
    console.log('无效的分享服务!');
    return "无效的分享服务";
  }
  button&&(msg.extra=button.extra);
    // 发送分享
    if(srv.authenticated){
        console.log('---已授权---');
        doShare(srv, msg,web_true,web_false);
    }else{
        console.log('---未授权---');
        srv.authorize(function(){
            doShare(srv, msg,web_true,web_false);
        }, function(e){
            console.log('认证授权失败:'+JSON.stringify(e));
            plus.nativeUI.alert('认证授权失败,请更新客户端');
        });
    }  
}
//---------------发送分享
function doShare(srv, msg,web_true,web_false){
    console.log(JSON.stringify(msg));
    srv.send(msg, function(){
        console.log('分享到"'+srv.description+'"成功!');
        web_true();
    }, function(e){
        console.log('分享到"'+srv.description+'"失败: '+JSON.stringify(e));
        web_false();
    });
}

 

posted @ 2018-12-01 15:03  糖羽仙  阅读(1018)  评论(0编辑  收藏  举报