• [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();
        });
    }
  • 相关阅读:
    洛谷P3806 【模板】点分治1 【点分治】
    《软件自动化测试开发》出版上市-广而告之
    接口测试用例设计
    接口测试用例设计
    测试的行业危机
    测试的行业危机
    测试的行业危机
    从0开始学正则表达式-基于python
    从0开始学正则表达式-基于python
    从0开始学正则表达式-基于python
  • 原文地址:https://www.cnblogs.com/lovetangyuxian/p/10049544.html
Copyright © 2020-2023  润新知