关闭

h5+分享到微信、朋友圈代码示例

6307人阅读 评论(1) 收藏 举报
分类:
在使用分享功能的时候会莫名的分享失败,debug时发现是图片过大的问题。
图片过大时ios平台上返回错误码-8,安卓上返回错误码-3(我测试是这样)
因此如果第一次分享失败时递归重新获取默认图片进行分享,这样就可以分享成功了。
如果使用七牛等云服务器存放图片,可以设置下载图片的大小,下载图片时在链接后加"!(你定义的大小或名称)",建议微信分享图片大小60*60,一般这样就能分享成功了

http://www.cnblogs.com/phillyx/

(function(window) {
    var Share={};
    Share.info = {
        id: '',
        name: '',
        head_image: "_www/images/icon/A/144.png",
        introduce: ''
    };
    /**
     * 更新分享服务
     */
    var shares = null;

    function getSerivces() {        
        plus.share.getServices(function(s) {
            
            shares = {};
            for (var i in s) {
                var t = s[i];
                shares[t.id] = t;
            }
        }, function(e) {
            console.log("获取分享服务列表失败:" + e.message);
        });
    };

    function shareAction(id, ex) {
        var s = null;
        
        if (!id || !(s = shares[id])) {
            console.log("无效的分享服务!");
            return;
        }
        if (s.authenticated) {
            console.log("---已授权---");
            shareMessage(s, ex);
        } else {
            console.log("---未授权---");
            //TODO 授权无法回调,有bug
            s.authorize(function() {    
                console.log('授权成功...')              
                shareMessage(s, ex);
            }, function(e) {        
                console.log("认证授权失败:" + e.code + " - " + e.message);
            });
        }
    };
    var sharecount = 0;
    /**
     * 发送分享消息
     * @param
     */
    function shareMessage(s, ex) {
        plus.nativeUI.showWaiting();
                setTimeout(plus.nativeUI.closeWaiting,5000);//TODO 5秒后自动关闭等待,否则如果用户分享出去后选择‘留在微信’,再手动回到app的时候,waiting无法关闭
        var msg = {
            extra: {
                scene: ex
            }
        };
        msg.href = "分享的网址" + "share?hid=" + Share.info.id;
        msg.title = "我在xxxx等你——" + Share.info._name;
        msg.content = Share.info.introduce;
        //取本地图片
        var img = plus.io.convertAbsoluteFileSystem(Share.info.head_image.replace('file://', ''));
        console.log(img);
        msg.thumbs = [img];
        if (sharecount > 0) {
            //如果本地图片过大,导致分享失败,递归时重新分享获取默认图片
            msg.thumbs = ["_www/images/icon/A/144.png"];
        }
        console.log(JSON.stringify(msg));
        s.send(msg, function() {
            plus.nativeUI.closeWaiting();
            var strtmp = "分享到\"" + s.description + "\"成功! ";
            console.log(strtmp);
            plus.nativeUI.toast(strtmp, {
                verticalAlign: 'center'
            });
            sharecount = 0;
        }, function(e) {
            plus.nativeUI.closeWaiting();           
            if (e.code == -2) {
                plus.nativeUI.toast('已取消分享', {
                    verticalAlign: 'center'
                });
                sharecount = 0;
            } else if (e.code == -3 || e.code == -8) {
                console.log(e.code);
                if (++sharecount < 2) {
                    //TODO 分享失败可能是图片过大的问题,递归取默认图片重新分享
                    shareMessage(s, ex);
                } else {
                    sharecount = 0;
                    plus.nativeUI.toast('分享失败', {
                        verticalAlign: 'center'
                    });
                }
            }else{
                console.error('分享失败:'+JSON.stringify(e))
            }
            console.log("分享到\"" + s.description + "\"失败: " + e.code + " - " + e.message);
        });
    };

    function share() {
        bhref = true;
        var ids = [{
                id: "weixin",
                ex: "WXSceneSession"
            }, {
                id: "weixin",
                ex: "WXSceneTimeline"
            }],
            bts = [{
                title: "发送给微信好友"
            }, {
                title: "分享到微信朋友圈"
            }];
        plus.nativeUI.actionSheet({
                cancel: "取消",
                buttons: bts
            },
            function(e) {
                var i = e.index;
                if (i > 0) {
                    shareAction(ids[i - 1].id, ids[i - 1].ex);
                }
            }
        );
    };
    Share.share=share;
    window.Share = Share;
    mui.plusReady(function() {      
        getSerivces();
    }); 
})(window)
1
0
查看评论

html(h5)页面实现微信js分享

html(h5)页面实现微信js分享
  • huwei2003
  • huwei2003
  • 2016-08-31 16:12
  • 25370

H5分享带缩略图,描述,微信内分享到好友,朋友圈等

H5分享,自定义缩略图,分享到微信好友,朋友圈等
  • lanliang901125
  • lanliang901125
  • 2017-11-13 13:01
  • 1807

H5app应用调用shareSDK分享到qq,微信,微博

账户管理          scalable=0">               ...
  • u010168807
  • u010168807
  • 2016-05-05 14:07
  • 3643

H5活动页面遇到的坑+微信分享代码

h5活动页面功能:[在手机上微信分享] 1.上传两张图片 2.播放一个背景音乐 很简单是么?那说明你知道的太少了,其实里面的坑好多 一下是制作的心路历程: 坑1、iphone上传照片的时候,因为有oriten的原因,所以传上去旋转了 坑2、安卓autoplay不生效 用js获取...
  • lixld
  • lixld
  • 2015-12-16 19:11
  • 10649

APP内嵌h5页面,这个H5页面如何分享到微信?

最近在做 jst  app 的商城,全部是webview 页面,商品详情页面的分享,不知道该怎么分享到微信好友和微信朋友圈。找了一下想到几种解决方案,在此分析一下各方案的利弊。 1.调用微信公开的jssdk 很多人说的调用微信公众平台卡发着文档 http://mp.weixi...
  • dongyang0311
  • dongyang0311
  • 2016-06-22 10:25
  • 10513

移动端(h5)浏览器分享选择好友总结

需求:需要在微信、各种移动端浏览器、QQ内置浏览器中实现将页面分享至微信好友、朋友圈、新浪微博、QQ好友、QQ空间。  分析:常用插件(百度、jiathis等)对于移动端的微信分享会出现上面刚开始讨论的问题,手机上弹出二维码无法使用,其他的媒体分享方式倒是正常,所以就移动端微信分享的问题进一步学习。...
  • cddcj
  • cddcj
  • 2017-06-22 11:03
  • 4544

h5页面在微信内部分享

今天自己写了一个微信分享的功能,可以说遇到了很多坑,但最好还是顺利完成了,分享给大家,让大家少爬一点坑 1.引用js: 2.生成签名: wx.config({ debug: false, appId: 'XXXXX', // 必填,公众号的唯一标...
  • qq_32328207
  • qq_32328207
  • 2017-11-07 15:38
  • 648

h5微信分享代码

  • 2016-08-22 09:47
  • 4KB
  • 下载

分享-微信公众号H5游戏平台完整源码

  • 2015-07-10 09:35
  • 18.06MB
  • 下载

微信,QQ分享插件

微信,QQ分享插件 分享到 微信好友 QQ好友 QQ空间 腾讯微博 新浪微博 人人网 //全局变...
  • daimomo000
  • daimomo000
  • 2017-10-19 17:23
  • 392
    个人资料
    • 访问:27001次
    • 积分:542
    • 等级:
    • 排名:千里之外
    • 原创:23篇
    • 转载:19篇
    • 译文:0篇
    • 评论:3条
    文章分类