HTML5+share

HTML5+share

share常见问题我要提意见

Share模块管理客户端的社交分享功能,提供调用终端社交软件的分享能力。通过plus.share可获取社交分享管理对象。

分享接口支持开发者获取设备上安装的社交App环境,调用社交App进行分享操作。若当前设备安装了对应的社交App,则调用此App的分享操作界面,否则调用WAP页面进行分享。

方法:

对象:

回调方法:

权限:

permissions


{
// ...
"permissions":{
	// ...
	"Share": {
		"description": "分享"
	}
}
}
			

getServices

获取分享服务


void plus.share.getServices(successCB, errorCB);
				

说明:

获取终端支持的分享通道列表,可用于提示用户进行分享列表选择。 成功后通过successCB回调返回当前环境支持的分享服务列表,失败则通过errorCB回调返回错误信息。

参数:

  • successCB: ( ServicesSuccessCallback ) 必选 获取分享服务成功回调 获取分享服务列表成功时触发,回调参数返回终端支持的分享服务列表。
  • errorCB: ( ShareErrorCallback ) 可选 获取分享服务失败回调 获取分享服务列表失败时触发,回调参数返回错误信息。

返回值:

void : 无

示例:


var shares=null;
// 监听plusready事件  
document.addEventListener("plusready", function(){
	// 获取分享服务
	plus.share.getServices(function(s){
		shares = s;
	}, function(e){
		alert("获取分享服务列表失败: "+JSON.stringify(e));
	});
}, false);
				

uni-app使用plus注意事项

sendWithSystem

使用系统分享


void plus.share.sendWithSystem(msg, successCB, errorCB);
				

说明:

调用系统分享组件发送分享消息,msg参数中设置分享的内容。 分享成功后通过successCB回调函数通知操作完成,失败则通过errorCB回调返回。

参数:

  • msg: ( ShareMessage ) 必选 要分享的消息对象 用于设置要分享的消息内容,如文字内容,图片等信息。 仅支持type类型为”text”、”image”的消息。
  • successCB: ( ShareSuccessCallback ) 必选 分享操作成功回调 调用系统分享操作成功时触发,用于返回操作成功信息。 注意:此回调并不表示分享消息已经发送成功,只表示成功请求系统发送成功。
  • errorCB: ( ShareErrorCallback ) 可选 分享操作失败回调 调用系统分享操作失败时触发,用于返回操作错误信息。

返回值:

void : 无

平台支持:

  • Android – ALL (支持) : 当msg参数中设置图片(msg.pictures属性)时,分享类型为”image/*”,在分享时可能只会发送图片(如微信); 没有设置图片时分享类型则认为是文本”text/plain”。
    注意: Android10及以上版本对文件系统访问权限有调整,可能在部分设备上无法分享应用沙盒目录中的图片,建议将图片保存到系统相册后再分享。
  • iOS – ALL (支持) : 不同的分享程序对分享内容有要求,如微信分享时必需添加链接地址(msg.href),否则微信分享失败。 注:iOS8.0及以上系统触发成功回调则表示发送消息成功。

示例:


// 使用系统分享发送分享消息 
function shareSystem(){
	plus.share.sendWithSystem({type:'text',content:'分享内容',href:'http://www.dcloud.io/'}, function(){
		console.log('分享成功');
	}, function(e){
		console.log('分享失败:'+JSON.stringify(e));
	});
}
				

uni-app使用plus注意事项

AuthOptions

JSON对象,分享授权认证参数选项


interface plus.share.AuthOptions {
	attribute String appid;
	attribute String appkey;
	attribute String appsecret;
	attribute String redirect_uri;
}
				

说明:

此对象支持的属性值由分享服务的授权认证模块定义。

属性:

  • appid: (String 类型 )分享服务平台申请的appid 动态设置分享服务授权认证时需要使用的appid,仅需要此参数的分享服务(如“微信”、“QQ”)支持。 如果未设置则使用运行环境中内置的appid值(如在HBuilder中可在manifest.json的“SDK配置”项中进行设置)。
  • appkey: (String 类型 )分享服务平台申请的appkey 动态设置分享服务授权认证时需要使用的appkey,仅需要此参数的分享服务(如“新浪微博”)支持。 如果未设置则使用运行环境中内置的appkey值(如在HBuilder中可在manifest.json的“SDK配置”项中进行设置)。
  • appsecret: (String 类型 )分享服务平台申请的appsecret 动态设置分享服务中需要使用的appsecret,仅需要此参数的分享服务(如“微信”、“新浪微博”)支持。 如果未设置则使用运行环境中内置的appsecret值(如在HBuilder中可在manifest.json的“SDK配置”项中进行设置);当开放平台申请的appsecret值涉及到安全问题时,可在应用运行时从服务器获取,然后通过此api动态设置。
  • redirect_url: (String 类型 )分享服务平台申请的redirect_url 动态设置分享服务中需要使用的redirect_url,仅需要此参数的登录授权服务(如“新浪微博登录”)支持。 如果未设置则使用运行环境中内置的redirect_url值(如在HBuilder中可在manifest.json的SDK配置项中进行设置)。

示例:


var shares=null;
// 需调用plus.share.getServices获取分享服务列表  
// ...

// 分享操作判断是否认证,如果没有则需要授权认证
function shareAction(){
	var s = shares[0];
	if(!s.authenticated){
		s.authorize(functioin(){
			console.log("认证完成!");
		}, function(e){
			console.log("未进行认证");
		}, {
			"appid": "XXXXXX"
		});
	}
}
				

uni-app使用plus注意事项

GeoPosition

JSON对象,位置信息(将废弃)


interface plus.share.GeoPosition {
	attribute Number latitude;
	attribute Number longitude;
}
				

说明:

GeoPosition对象保存位置信息,用于标识分享操作时用户的位置信息。 注意:目前主流App不再支持设置位置信息,将废弃。

属性:

  • latitude: (Number 类型 )用户位置的纬度坐标信息
  • longitude: (Number 类型 )用户位置的经度坐标信息

示例:


/**
 * 发送分享消息
 * @param {plus.share.ShareService} s
 */
function shareMessage(s){
	s.send({content:"Hello",
	    geo: {   // 可以调用plus.geolocation.getCurrentPosition获取当前位置
	        latitude: 39.9074,
	        longitude: 116.3975
	    }
	}, function(){
		alert("分享成功!");
	},function(e){
		alert("分享失败:"+e.message);
	});
}
				

uni-app使用plus注意事项

ShareService

分享服务对象


interface plus.share.ShareService {
	// Attributes
	attribute DOMString id;
	attribute DOMString description;
	attribute Boolean authenticated;
	attribute DOMString accessToken;
	attribute Boolean nativeClient;
	
	// Methods
	function void authorize(successCallback, errorCallback, options);
	function void forbid();
	function void send(message);
	function void launchMiniProgram(options);
	function void openCustomerServiceChat(options, successCB, errorCB);
}
				

说明:

ShareService对象用于表示分享服务,在JS中为对象,用于向系统请求分享操作。

属性:

方法:

id

分享服务标识

说明:

ShareServerIdentity 类型 只读属性

用于表示分享服务标识: “sinaweibo” – 表示新浪微博; “weixin” – 表示微信; “qq” – 表示腾讯QQ; “tencentweibo” – 表示腾讯微博(已废弃)。

description

分享服务描述

说明:

DOMString 类型 只读属性

用于描述分享服务的信息: 如“新浪微博”、“腾讯微博”、“微信”、“QQ”。

authenticated

是否授权认证

说明:

Boolean 类型 只读属性

用于标识此分享是否已经授权认证过,true表示已完成授权认证;false表示未完成授权认证。

accessToken

授权认证信息

说明:

DOMString 类型 只读属性

仅在authenticated为true时有效,标识客户认证标识信息,用于发送分享信息。

nativeClient

是否存在对应的分享客户端

说明:

Boolean 类型 只读属性

对于某些分享服务,必须依赖相应客户端App才能实现分享操作;有些分享服务则不依赖,客户端App不存在时调用WAP页面进行分享操作。
具体情况如下:

  • 微信 – 依赖微信客户端App
  • QQ – 依赖QQ客户端App
  • 新浪微博 – 不依赖微博客户端App

注意:提交AppStore审核时没有安装相应的客户端App可能导致无法通过审核,此时需要判断相应的客户端App是否安装,如果没有安装则不显示对应的分享入口。

authorize

授权认证操作


						
void obj.authorize(successCallback, errorCallback, options);
						
						

说明:

对指定的分享服务进行授权认证操作,在授权前可通过ShareService.authenticated属性判断是否已经授权过,通常只需要对没有进行过授权认证的服务进行授权认证操作。 授权认证操作成功后通过successCB回调函数通知操作完成,操作失败则通过errorCB回调返回。

参数:

  • successCallback: ( AuthorizeSuccessCallback ) 必选 分享服务授权认证成功回调 分享服务授权认证操作成功时的回调函数,用于返回分享授权操作成功信息。
  • errorCallback: ( ShareErrorCallback ) 可选 分享服务授权认证失败回调 分享服务授权认证操作失败时的回调函数,用于返回错误信息。
  • options: ( AuthOptions ) 可选 分享服务授权认证参数 分享服务授权认证操作使用的参数。

返回值:

void : 无

示例:


var shares=null;
// 获取分享服务列表  
// ...

// 分享操作判断是否认证,如果没有则需要授权认证
function shareAction(){
	var s = shares[0];
	if(!s.authenticated){
		s.authorize(functioin(){
			console.log("认证完成!");
		}, function(e){
			console.log("未进行认证");
		}, {
			"appid": "XXXXXX"
		});
	}
}
				

uni-app使用plus注意事项

forbid

取消授权认证


void obj.forbid();
						

说明:

对指定的分享服务取消授权认证操作,取消授权认证后,再次分享时需重新进行授权操作。

参数:

    返回值:

    void : 无

    示例:

    
    var shares=null;
    // 获取分享服务列表  
    // ...
    
    // 取消所有分享服务的
    function cancelAuthorize(){
    	for(var i in shares){
    		var s = shares[i];
    		if(s.authenticated){
    			s.forbid();
    		}
    	}
    }
    						

    uni-app使用plus注意事项

    send

    发送分享

    
    void obj.send(msg, successCB, errorCB);
    						

    说明:

    发送分享消息,分享消息的内容通过msg设置。 发送成功后通过successCB回调函数通知操作完成,发送失败则通过errorCB回调返回。若分享服务没有进行授权认证或授权认证失效则触发失败回调函数。

    参数:

    • msg: ( ShareMessage ) 必选 要发送的分享消息对象 用于设置要分享的消息内容,如文字内容,图片等信息。
    • successCB: ( ShareSuccessCallback ) 必选 发送分享消息成功回调 发送分享消息操作成功时的回调函数,用于返回发送分享消息操作成功信息。
    • errorCB: ( ShareErrorCallback ) 可选 发送分享消息失败回调 发送分享消息操作失败时的回调函数,用于返回错误信息。

    返回值:

    void : 无

    示例:

    
    /**
     * 发送分享消息
     * @param {plus.share.ShareService} s
     */
    function shareMessage(s){
    	s.send({content:"Hello"}, function(){
    		alert("分享成功!");
    	},function(e){
    		alert("分享失败:"+e.message);
    	});
    }
    						

    uni-app使用plus注意事项

    launchMiniProgram

    调用微信小程序

    
    void obj.launchMiniProgram(options, successCB, errorCB);
    						

    说明:

    在微信小程序中打开APP(使用button组件的open-type属性值设置为”launchApp”)时,可通过plus.runtime.arguments获取小程序传入的参数(小程序中button组件的app-parameter属性值)。 注意:需在微信开放平台将应用关联小程序才能正常调用。

    参数:

    返回值:

    void : 无

    示例:

    
    var sweixin = null; 
    // 需调用plus.share.getServices获取微信分享服务对象
    //...
    
    /**
     * 调用微信小程序
     */
    function launchMiniProgram(){
    	sweixin?sweixin.launchMiniProgram({
    		id:'gh_33446d7f7a26'
    	}):plus.nativeUI.alert('当前环境不支持微信操作!');
    }
    						

    uni-app使用plus注意事项

    openCustomerServiceChat

    打开微信客服

    
    void obj.openCustomerServiceChat(options, successCB, errorCB);
    						

    说明:

    切换到微信App中,打开微信客服聊天界面。 注意:需在微信开放平台开通微信客服功能。

    参数:

    • options: ( WeixinCustomerServiceOptions ) 必选 微信客服的参数 设置要调用微信客服的信息。
    • successCB: ( ShareSuccessCallback ) 必选 打开微信客服成功回调 调用微信客服操作成功时触发,无返回数据。
    • errorCB: ( ShareErrorCallback ) 可选 调用微信客服失败回调 调用微信客服操作失败时触发,返回错误信息。

    返回值:

    void : 无

    示例:

    
    var sweixin = null; 
    // 需调用plus.share.getServices获取微信分享服务对象
    //...
    
    /**
     * 打开微信客服
     */
    function openWeixinService(){
    	sweixin?sweixin.openCustomerServiceChat({
    		corpid:'111112222',
    		url:'https://www.weixin.com//'
    	}):plus.nativeUI.alert('当前环境不支持微信操作!');
    }
    						

    uni-app使用plus注意事项

    ShareServerIdentity

    分享服务标识

    常量:

    • “sinaweibo”: (DOMString 类型 )新浪微博
    • “tencentweibo”: (DOMString 类型 )腾讯微博
    • “weixin”: (DOMString 类型 )微信

    ShareMessage

    JSON对象,分享消息对象

    
    interface plus.share.ShareMessage {
    	attribute String type;
    	attribute String content;
    	attribute String[] thumbs;
    	attribute String[] pictures;
    	attribute String media;
    	attribute String href;
    	attribute String title;
    	attribute GEOPosition geo;
    	attribute ShareMessageExtra extra;
    	attribute WeixinMiniProgramOptions miniProgram;
    	attribute String interface;
    }
    				

    说明:

    ShareMessage对象用于表示分享消息内容,在JS中为JSON对象,用于向系统发送分享信息操作。

    属性:

    • type: (String 类型 )分享消息的类型
      微信分享平台,可取值:

      • “web”-分享网页类型,title(必填)、content(必填)、thumbs(必填)、href(网页url,必填)属性值有效;
      • “text”-分享文字类型,content(必填)属性值有效;
      • “image”-分享图片类型,pictures(必填)属性值有效;
      • “music”-分享音乐类型,title(必填)、content(必填)、thumbs(必填)、href(网页url,可选)、media(音乐url,必填)属性值有效;
        HBuilderX3.1.0+支持href属性,href为音乐网页地址,media为音乐资源地址。
      • “video”-分享视频类型,title(必填)、content(必填)、thumbs(必填)、media(视频url,必填)属性值有效;
      • “miniProgram”-分享小程序类型(仅支持分享到好友),title(必填)、content(必填)、thumbs(图片小于128K,宽高比为5:4,必填)、miniProgram(小程序参数,必填)属性值有效;

      没有设置type时,如果href值有效则默认值为”web”,如果pictures有效则默认值为”image”,否则默认值为”text”。
      新浪微博分享平台,可取值:

      • “web”-分享网页类型,content、href(网页url,必填),分享链接添加到内容之后;
      • “text”-分享文字类型,content(必填)属性有效,可在内容中直接插入链接地址;
      • “image”-分享图片类型,content(可选)、thumbs(可选)、pictures(必填)属性有效;
      • “video”-分享视频类型,content(可选)、thumbs(可选)、media(本地视频文件,必填)属性有效;

      没有设置type时,如果存在thumbs则默认值为”image”,如果存在href则默认值为”web”,否则默认为”text”。
      QQ分享平台,可取值:

      • “web”-分享网页类型,title(必填)、content(必填)、thumbs(必填)、href(网页url,必填)属性值有效;
        注意:HBuilderX2.9.9+版本支持。 Android平台在低版本QQ上可能不支持图片(thumbs),需更新到最新版本QQ。
      • “text”-分享文字类型,href(iOS可选,Android必填)、title(必填,最长30个字符)、content(可选,最长40个字符)、pictures或thumbs(可选,优先pictures,iOS不支持)属性有效;
      • “image”-分享图片类型,pictures或thumbs(必填,优先pictures)属性有效;
      • “music”-分享音乐类型,title(必填,最长30个字符)、content(可选,最长40个字符)、href(网页url,必填)、media(音乐url,必填)、pictures或thumbs(可选,优先pictures)属性值有效;

      没有设置type时,默认值”text”。

    • content: (String 类型 )分享消息的文字内容
    • pictures: (Array[String] 类型 )分享消息的图片 分享消息中包含的图片路径,仅支持本地路径及网络路径(新浪微博暂时不支持网络路径)。 若分享平台仅支持提交一张图片,传入多张图片则仅提交第一张图片。 如果未指定type类型,优先级顺序为:pictures>content(即设置了pictures则认为分享图片类型)。

      平台支持

      • Android – 4.4+ (支持) : 分享到微信单张图片大小不能超过10M,分享到QQ单张图片不能超过5M。
      • iOS – 9.0+ (支持)
    • thumbs: (Array[String] 类型 )分享消息的缩略图 分享消息中包含的缩略图路径,支持本地路径及网络路径(新浪微博暂时不支持网络路径)。 若分享平台仅支持提交一张图片,传入多张图片则仅提交第一张图片。 如果分享平台的信息不支持缩略图,若没有设置消息的图片(pictures)则使用缩略图,否则忽略其属性值。 注意:图片有大小限制,推荐图片小于20Kb。如果使用的图片过大,会自动压缩图片大小,此时可能引起图片质量下降。
    • media: (String 类型 )分享的多媒体资源 分享的多媒体资源地址,当type值为”music”、”video”时有效。 注意: 微信分享平台支持音乐、视频类型,仅支持网络地址(以http://或https://开头); QQ分享平台支持音乐类型,仅支持网络路径(以http://或https://开头); 新浪微博分享平台支持视频类型,仅支持本地文件路径。
    • href: (String 类型 )分享独立的链接 分享资源地址,仅支持网络地址(以http://或https://开头)。 如果未指定type类型,优先级顺序为:href>pictures>content(即设置了href则认为分享网页类型)。
      
      var sweixin = null; 
      // 需调用plus.share.getServices获取微信分享服务对象
      //...
      
      // 分享到微信
      function shareWeixinMessage(){
      	sweixin.send( {content:"DCloud HBuilder-做最好的HTML5开发工具",href:"http://www.dcloud.io/",extra:{scene:"WXSceneTimeline"}}, function(){
      		alert("分享成功!");
      	}, function(e){
      		alert("分享失败:"+e.message);
      	});
      }
      						
    • title: (String 类型 )分享消息的标题 仅微信分享网页、音频、视频、小程序类型时支持。
    • geo: (GeoPosition 类型 )分享消息中包含位置信息(将废弃) 注意:目前主流App不再支持设置位置信息,将废弃。
    • extra: (ShareMessageExtra 类型 )分享消息扩展参数
    • miniProgram: (WeixinMiniProgramOptions 类型 )分享微信小程序参数 仅微信分享小程序类型时支持。
    • interface: (String 类型 )分享消息的模式 可取值: “auto” – 自动选择,如果已经安装微博客户端则采用编辑界面进行分享,否则采用无界面分享; “slient” – 静默分享,采用无界面模式进行分享; “editable” – 进入编辑界面,用户确认分享内容后发送,如果当前未安装微博客户端则触发错误回调。 默认值为”auto”。 (仅新浪微博分享时生效)

    ShareMessageExtra

    JSON对象,保存分享消息扩展信息

    
    interface plus.share.ShareMessageExtra {
    	attribute String scene;
    }
    				

    说明:

    ShareMessageExtra对象用于保存各分享平台扩展的参数,用于自定义分享功能。

    属性:

    • scene: (String 类型 )微信分享场景,仅微信分享平台有效 可取值: “WXSceneSession”分享到微信的“我的好友”; “WXSceneTimeline”分享到微信的“朋友圈”中; “WXSceneFavorite”分享到微信的“我的收藏”中。 默认值为”WXSceneSession”。

    WeixinMiniProgramOptions

    JSON对象,打开微信小程序的信息

    
    interface plus.share.WeixinMiniProgramOptions {
    	attribute String id;
    	attribute String path;
    	attribute Nnumber type;
    	attribute webUrl;
    }
    				

    说明:

    用于配置分享小程序的参数,如小程序标识、页面路径等。 注意:分享的小程序需要在微信开放平台关联的开发者账号下,否则会分享失败。

    属性:

    • id: (String 类型 )微信小程序ID 注意:是微信小程序的原始ID(”g_”开头的字符串)。
    • path: (String 类型 )微信小程序打开的页面路径
    • type: (Number 类型 )微信小程序版本类型 可取值: 0-正式版; 1-测试版; 2-体验版。 默认值为0。
    • webUrl: (String 类型 )兼容低版本的网页链接

    示例:

    
    var sweixin = null; 
    // 需调用plus.share.getServices获取微信分享服务对象
    //...
    
    // 分享小程序
    function shareMiniProgram(){
        if(!sweixin){
    		plus.nativeUI.alert('当前环境不支持微信分享操作!');
        }
    	var msg={type:'miniProgram',title:'分享小程序标题',thumbs:['_www/mp.png']};
    	msg.content = '分享小程序描述内容。';
    	msg.miniProgram={id:'g_XXXXXXX',	// 小程序的原始标识
        webUrl:'http://www.dcloud.io/'};
    	// 发送分享
    	if(sweixin.authenticated){
    		doShare(sweixin, msg);
    	}else{
    		sweixin.authorize(function(){
    			doShare(sweixin, msg);
    		}, function(e){
    			console.log('认证授权失败:'+JSON.stringify(e));
    		});
    	}
    }
    				

    uni-app使用plus注意事项

    WeixinCustomerServiceOptions

    JSON对象,打开微信客服的信息

    
    interface plus.share.WeixinCustomerServiceOptions {
    	attribute String corpid
    	attribute String url;
    }
    				

    说明:

    用于配置微信客服的参数,如客服标识、服务地址等。

    属性:

    • corpid: (String 类型 )微信客服ID 注意:是微信小程序的原始ID(”g_”开头的字符串)。
    • url: (String 类型 )微信客服的页面路径

    ServicesSuccessCallback

    获取分享服务成功回调

    
    void ServicesSuccessCallback(services){
    	// Get share services success code
    }
    				

    说明:

    当获取分享服务列表成功时的回调函数,用于返回终端支持的分享服务列表。

    参数:

    • services: ( Array[ShareService] ) 必选 数组,运行环境支持的分享服务列表 运行环境支持的分享服务列表数组,可通过services.length获取分享服务列表的数目。

    返回值:

    void : 无

    AuthorizeSuccessCallback

    分享授权认证成功回调

    
    void AuthorizeSuccessCallback(services){
    	  // Authorize success code
    }
    				

    说明:

    分享服务授权认证操作成功时调用。

    参数:

    • service: ( ShareService ) 必选 授权认证操作的分享服务对象

    返回值:

    void : 无

    ShareSuccessCallback

    分享操作成功回调

    
    void ShareSuccessCallback(){
    	// Share success code
    }
    				

    说明:

    分享操作成功回调函数,当分享操作成功时调用。

    参数:

    返回值:

    void : 无

    ShareErrorCallback

    分享操作失败回调

    
    void ShareErrorCallback(error){
    	// Error 
    	var code = error.code; 			// 错误编码
    	var message = error.message;	// 错误描述信息
    }
    				

    说明:

    当分享操作失败时的回调函数,用于返回分享相关操作失败的错误信息。

    参数:

    • error: ( Exception ) 必选 分享操作失败错误信息 可通过error.code(Number类型)获取错误编码; 可通过error.message(String类型)获取错误描述信息。

    返回值:

    void : 无