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


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

    在使用分享功能的时候会莫名的分享失败,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)
    
    
  • 相关阅读:
    Java实现数组去除重复数据的方法详解
    java枚举和constant使用区别
    如何健壮你的后端服务
    entityframework学习笔记--001
    MongoDB配置服务--MongoDB安装成为windows服务
    MongoDB基础入门003--使用官方驱动操作mongo,C#
    MongoDB基础入门002--基本操作,增删改查
    MongoDB基础入门001--安装
    webapi的返回类型,webapi返回图片
    C#异步下载文件--基于http请求
  • 原文地址:https://www.cnblogs.com/phillyx/p/4645235.html
Copyright © 2020-2023  润新知