share
Share模块管理客户端的社交分享功能,提供调用终端社交软件的分享能力。通过plus.share可获取社交分享管理对象。
方法:
- getServices: 获取分享服务
- sendWithSystem: 使用系统组件发送分享
对象:
- ShareService: 分享服务对象
- ShareServerIdentity: 分享服务标识
- ShareMessage: JSON对象,分享消息对象
- GeoPosition: JSON对象,用户位置信息
- ShareMessageExtra: JSON对象,保存分享消息扩展信息
- AuthOptions: JSON对象,分享授权认证参数选项
- Authorize: 分享授权控件对象
回调方法:
- ServicesSuccessCallback: 获取分享服务成功回调
- AuthorizeSuccessCallback: 分享授权认证成功回调
- ShareSuccessCallback: 分享操作成功回调
- ShareErrorCallback: 分享操作失败回调
模块:
permissions
{
// ...
"permissions":{
// ...
"Share": {
"description": "分享"
}
}
}
getServices
获取分享服务
void plus.share.getServices(successCB, errorCB);
说明:
获取终端支持的分享通道列表,可用于提示用户进行分享服务器的选择。获取分享服务成功后通过successCB回调返回支持的所有服务列表,获取服务失败则通过errorCB回调返回。
参数:
- successCB:
(
ServicesSuccessCallback
)
必选 获取分享服务成功回调
获取分享服务列表成功时的回调函数,用于返回终端支持的分享服务列表。 - errorCB:
(
ShareErrorCallback
)
可选 获取分享服务失败回调
获取分享服务列表失败时的回调函数,用于返回错误信息。
返回值:
void : 无示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>Share Example</title>
<script type="text/javascript">
var shares=null;
// 监听plusready事件
document.addEventListener("plusready", function(){
// 扩展API加载完毕,现在可以正常调用扩展API
plus.share.getServices(function(s){
shares = s;
}, function(e){
alert("获取分享服务列表失败:"+e.message);
});
}, false );
</script>
</head>
<body>
</body>
</html>
sendWithSystem
使用系统组件发送分享
void plus.share.sendWithSystem(msg, successCB, errorCB);
说明:
调用系统分享组件分享消息,通过msg参数设置分享内容。 发送成功后通过successCB回调函数通知操作完成,发送失败则通过errorCB回调返回。
参数:
- msg:
(
ShareMessage
)
必选 要发送的分享消息对象
用于设置要分享的消息内容,如文字内容,图片等信息。 - successCB:
(
ShareSuccessCallback
)
必选 发送分享消息成功回调
发送分享消息操作成功时的回调函数,用于返回发送分享消息操作成功信息。 - errorCB:
(
ShareErrorCallback
)
可选 发送分享消息失败回调
发送分享消息操作失败时的回调函数,用于返回错误信息。
返回值:
void : 无平台支持:
- Android - ALL (支持): 当msg参数中设置图片(msg.pictures属性)时,分享类型为"image/*",在分享时可能只会发送图片(如微信);没有设置图片时分享类型则认为是文本"text/plain"。
- iOS - ALL (支持): 不同的分享程序对分享内容有要求,如微信分享时必需添加链接地址(msg.href),否则微信分享失败。
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>Share Example</title>
<script type="text/javascript">
// 监听plusready事件
document.addEventListener("plusready", function(){
// 扩展API加载完毕,现在可以正常调用扩展API
}, false);
// 通过系统组件分享
function shareSystem(){
plus.share.sendWithSystem({content:'分享内容',href:'http://www.dcloud.io/'}, function(){
console.log('分享成功');
}, function(e){
console.log('分享失败:'+JSON.stringify(e));
});
}
</script>
</head>
<body>
使用系统组件发送分享<br/>
<button onclick="shareSystem()">发送分享</button>
</body>
</html>
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);
}
说明:
ShareService对象用于表示分享服务,在JS中为对象,用于向系统请求分享操作。
属性:
- id: 分享服务标识
- description: 分享服务描述
- authenticated: 是否授权认证
- accessToken: 授权认证信息
- nativeClient: 是否存在对应的分享客户端
方法:
id
分享服务标识
说明:
ShareServerIdentity 类型 只读属性
用于表示分享服务标识: "sinaweibo" - 表示新浪微博; "tencentweibo" - 表示腾讯微博; "weixin" - 表示微信; "qq" - 表示腾讯QQ。
description
分享服务描述
说明:
DOMString 类型 只读属性
用于描述分享服务的信息: 如“新浪微博”、“腾讯微博”、“微信”、“QQ”。
authenticated
是否授权认证
说明:
Boolean 类型 只读属性
用于标识此分享是否已经授权认证过,true表示已完成授权认证;false表示未完成授权认证。
accessToken
授权认证信息
说明:
DOMString 类型 只读属性
仅在authenticated为true时有效,标识客户认证标识信息,用于发送分享信息。
nativeClient
是否存在对应的分享客户端
说明:
Boolean 类型 只读属性
对于某些分享服务,可直接调用本地客户端程序进行授权认证,此属性即可提供此相关信息,若没有安装本地客户端则可能调用其它方式进行分享操作,如WAP方式等。
authorize
授权认证操作
void obj.authorize(successCallback, errorCallback, options);
说明:
对指定的分享服务进行授权认证操作,在授权前可通过ShareService.authenticated属性判断是否已经授权过,通常只需要对没有进行过授权认证的服务进行授权认证操作。 授权认证操作成功后通过successCB回调函数通知操作完成,操作失败则通过errorCB回调返回。
参数:
- successCallback:
(
AuthorizeSuccessCallback
)
必选 分享服务授权认证成功回调
分享服务授权认证操作成功时的回调函数,用于返回分享授权操作成功信息。 - errorCallback:
(
ShareErrorCallback
)
可选 分享服务授权认证失败回调
分享服务授权认证操作失败时的回调函数,用于返回错误信息。 - options:
(
AuthOptions
)
可选 分享服务授权认证参数
分享服务授权认证操作使用的参数。
返回值:
void : 无示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>Share Example</title>
<script type="text/javascript">
var shares=null;
// 监听plusready事件
document.addEventListener("plusready", function(){
// 扩展API加载完毕,现在可以正常调用扩展API
plus.share.getServices(function(s){
shares = s;
}, function(e){
console.log("获取分享服务列表失败:"+e.message);
} );
}, false);
function shareAction(){
var s = shares[0];
if(!s.authenticated){
s.authorize(functioin(){
console.log("认证完成!");
}, function(e){
console.log("未进行认证");
} )
}
}
</script>
</head>
<body>
</body>
</html>
forbid
取消授权认证
void obj.forbid();
说明:
对指定的分享服务取消授权认证操作,取消授权认证后,再次分享时需重新进行授权操作。
参数:
返回值:
void : 无示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>Share Example</title>
<script type="text/javascript">
var shares=null;
// 监听plusready事件
document.addEventListener("plusready", function(){
// 扩展API加载完毕,现在可以正常调用扩展API
plus.share.getServices(function(s){
shares = s;
}, function(e){
alert("获取分享服务列表失败:"+e.message);
} );
}, false);
// 取消所有分享服务的
function cancelAuthorize(){
for(var i in shares){
var s = shares[i];
if(s.authenticated){
s.forbid();
}
}
}
</script>
</head>
<body>
</body>
</html>
send
发送分享
void obj.send(msg, successCB, errorCB);
说明:
发送分享消息,分享消息的内容通过msg设置。 发送成功后通过successCB回调函数通知操作完成,发送失败则通过errorCB回调返回。若分享服务没有进行授权认证或授权认证失效则触发失败回调函数。
参数:
- msg:
(
ShareMessage
)
必选 要发送的分享消息对象
用于设置要分享的消息内容,如文字内容,图片等信息。 - successCB:
(
ShareSuccessCallback
)
必选 发送分享消息成功回调
发送分享消息操作成功时的回调函数,用于返回发送分享消息操作成功信息。 - errorCB:
(
ShareErrorCallback
)
可选 发送分享消息失败回调
发送分享消息操作失败时的回调函数,用于返回错误信息。
返回值:
void : 无示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>Share Example</title>
<script type="text/javascript">
var shares=null;
// 监听plusready事件
document.addEventListener("plusready", function(){
// 扩展API加载完毕,现在可以正常调用扩展API
plus.share.getServices(function(s){
shares = s;
}, function(e){
alert("获取分享服务列表失败:"+e.message);
});
}, false);
/**
* 分享操作
* @param {plus.share.ShareService} s
*/
function shareAction(s){
if(!s){
return;
}
if(s.authenticated){
shareMessage(s);
}else{
s.authorize(shareMessage, function(e){
alert("未进行认证");
});
}
}
/**
* 发送分享消息
* @param {plus.share.ShareService} s
*/
function shareMessage(s){
s.send({content:"Hello"}, function(){
alert("分享成功!");
},function(e){
alert("分享失败:"+e.message);
});
}
</script>
</head>
<body>
发送分享<br/>
<button onclick="shareAction(shares[0])">发送分享</button>
</body>
</html>
ShareServerIdentity
分享服务标识
常量:
- "sinaweibo": (DOMString
类型
)新浪微博
- "tencentweibo": (DOMString
类型
)腾讯微博
- "weixin": (DOMString
类型
)微信
ShareMessage
JSON对象,分享消息对象
interface plus.share.ShareMessage {
attribute String content;
attribute String[] thumbs;
attribute String[] pictures;
attribute String href;
attribute String title;
attribute JSON extra;
attribute GEOPosition geo;
attribute ShareMessageExtra extra;
attribute String interface;
}
说明:
ShareMessage对象用于表示分享消息内容,在JS中为JSON对象,用于向系统发送分享信息操作。
属性:
- content: (String
类型
)分享消息的文字内容
- pictures: (Array[
String
]
类型
)分享消息的图片
分享消息中包含的图片路径,仅支持本地路径。 若分享平台仅支持提交一张图片,传入多张图片则仅提交第一张图片。 如果不能同时支持其它内容信息,优先级顺序为:pictures>content。
- thumbs: (Array[
Stromg
]
类型
)分享消息的缩略图
分享消息中包含的缩略图路径; 若分享平台仅支持提交一张图片,传入多张图片则仅提交第一张图片; 如果分享平台的信息不支持缩略图,若没有设置消息的图片(pictures)则使用缩略图,否则忽略其属性值。 注意:图片有大小限制,推荐图片小于20Kb。
平台支持
- Android - 2.3+ (支持): 可支持网络图片路径。
- iOS - 5.1+ (不支持): 不支持网络图片路径。
- href: (String
类型
)分享独立的链接
分享独立链接地址,仅支持网络地址(以http://或https://开头)。 如果不能同时支持其它内容信息,优先级顺序为:href>pictures>content。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/> <title>Share Example</title> <script type="text/javascript"> var shares=null,sharewx=null; // 监听plusready事件 document.addEventListener("plusready", function(){ // 扩展API加载完毕,现在可以正常调用扩展API plus.share.getServices(function(s){ shares = s; for(var i in s){ if('weixin'==s[i].id){ sharewx=s[i]; } } }, function(e){ alert( "获取分享服务列表失败:"+e.message ); }); }, false ); function shareWeixinMessage(){ sharewx.send( {content:"DCloud HBuilder-做最好的HTML5开发工具",href:"http://www.dcloud.io/",extra:{scene:"WXSceneTimeline"}}, function(){ alert("分享成功!"); }, function(e){ alert("分享失败:"+e.message); }); } </script> </head> <body> <button onclick="shareWeixinMessage()">分享链接到微信朋友圈</button> </body> </html>
- title: (String
类型
)分享消息的标题
目前仅微信分享独立链接消息时支持。
- geo: (GeoPosition
类型
)分享消息中包含的用户地理信息数据
- extra: (ShareMessageExtra
类型
)分享消息扩展参数
- interface: (String
类型
)分享消息的模式
可取值: "auto" - 自动选择,如果已经安装微博客户端则采用编辑界面进行分享,否则采用无界面分享; "slient" - 静默分享,采用无界面模式进行分享; "editable" - 进入编辑界面,用户确认分享内容后发送,如果当前未安装微博客户端则触发错误回调。 默认值为"auto"。 (仅新浪微博分享时生效)
GeoPosition
JSON对象,用户位置信息
interface plus.share.GeoPosition {
attribute Number latitude;
attribute Number longitude;
}
说明:
GeoPosition对象用于表示用户分享消息时的位置信息。用于标识分享操作时用户的位置信息。
属性:
- latitude: (Number
类型
)用户位置的纬度坐标信息
- longitude: (Number
类型
)用户位置的经度坐标信息
ShareMessageExtra
JSON对象,保存分享消息扩展信息
interface plus.share.ShareMessageExtra {
attribute String scene;
}
说明:
ShareMessageExtra对象用于保存各分享平台扩展的参数,用于自定义分享功能。
属性:
- scene: (String
类型
)微信分享场景,仅微信分享平台有效
可取值: "WXSceneSession"分享到微信的“我的好友”; "WXSceneTimeline"分享到微信的“朋友圈”中; "WXSceneFavorite"分享到微信的“我的收藏”中。 默认值为"WXSceneSession"。
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配置项中进行设置)。
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<title>OAuth Example</title>
<script type="text/javascript">
var auths=null;
// 监听plusready事件
document.addEventListener("plusready", function(){
// 扩展API加载完毕,现在可以正常调用扩展API
plus.oauth.getServices(function(services){
auths = services;
}, function(e){
alert("获取分享服务列表失败:"+e.message+" - "+e.code);
});
}, false );
// 登录操作
function authLogin(){
var s = auths[0];
if(!s.authResult){
s.login(function(e){
alert("登录认证成功!");
}, function(e){
alert("登录认证失败!");
}, {appid:"wx0411fa6a39d61297" // 微信应用的appid
,scope:"snsapi_userinfo"} // 授权获取用户信息
);
}
}
</script>
</head>
<body>
请求授权登录认证操作(配置参数)
<button onclick="authLogin()">Login</button>
</body>
</html>
Authorize
分享授权控件对象
interface plus.share.Authorize{
// Methods
function void load(id);
function void setVisible(visible);
// Events
function void onloaded();
function void onauthenticated();
function void onerror();
}
说明:
Authorize对象表示分享控件对象,用于在窗口中显示分享控件,使用此对象可自定义分享授权界面。
构造:
- Authorize(id,display): 创建分享授权控件对象
方法:
- load: 加载分享授权页面
- setVisible: 设置分享授权控件是否可见
事件:
- onloaded: 分享控件加载完成事件
- onauthenticated: 分享授权认证成功事件
- onerror: 分享授权认证失败事件
Authorize(id,display)
创建分享授权控件对象
var obj = new plus.share.Authorize(id, display);
说明:
根据指定的id的元素创建分享控件。
参数:
- id:
(
DOMString
)
必选 分享控件在窗口的对应obj节点的id值,此id值用于定位控件位置
- visible:
(
Boolean
)
可选 分享控件是否创建后立即显示,默认值为true
返回值:
Authorize : 分享控件对象load
加载分享授权页面
void obj.load(id);
说明:
创建分享授权页面后,需要调用此方法指定分享服务标识来加载授权页面数据,此标识可使用ShareService对象的id属性。
参数:
- id:
(
DOMString
)
必选 要加载的分享服务标识
返回值:
void : 无setVisible
设置分享授权控件是否可见
void obj.setVisible(visible);
说明:
创建分享授权页面后,调用此方法设置分享授权控件在页面中是否可见。
参数:
- visible:
(
Boolean
)
必选 要设置分享控件是否可见,true标识可见,false表示不可见。
返回值:
void : 无onloaded
分享控件加载完成事件
void obj.onloaded = function(){
// loaded code
}
说明:
EventHandler 类型
分享授权控件内容加载完成事件,通过调用load方法加载分享授权控件内容,当内容加载完成时触发。
onauthenticated
分享授权认证成功事件
void obj.onauthenticated = function(service){
// Authenticate success code
}
说明:
用户在分享授权控件上输入操作授权成功时触发,事件方法格式参考ShareSuccessCallback回调函数。
onerror
分享授权认证失败事件
void obj.onerror = function(error) {
// Error code
}
说明:
用户在分享授权控件上输入操作授权认证错误时触发,事件方法格式参考ShareErrorCallback回调函数。
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:
(
DOMException
)
必选 分享操作失败错误信息
可通过error.code(Number类型)获取错误编码; 可通过error.message(String类型)获取错误描述信息。