zoukankan      html  css  js  c++  java
  • 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)
    
    
  • 相关阅读:
    119. Pascal's Triangle II
    118. Pascal's Triangle
    112. Path Sum
    111. Minimum Depth of Binary Tree
    110. Balanced Binary Tree
    108. Convert Sorted Array to Binary Search Tree
    88. Merge Sorted Array
    83. Remove Duplicates from Sorted List
    70. Climbing Stairs
    陌陌面试经历
  • 原文地址:https://www.cnblogs.com/phillyx/p/4645235.html
Copyright © 2011-2022 走看看