ShareSDK


ShareSDK模块封装了ShareSDK社会化分享。支持包括QQ(QQ和QZone)、微信(微信好友,微信朋友圈和微信收藏)、新浪微博、腾讯微博、开心网、人人网、豆瓣、有道云笔记主流社交平台,帮助开发者轻松实现社会化分享、登录、获得用户资料等主流的社会化功能。通过rd.ShareSDK调用。该模块不可与QQ,微信,新浪微博模块共同使用。ShareSDK 不可与sina同时使用,否则会造成编译失败

使用该插件必须要在不同平台申请开发者账号并创建应用,获取apikey与apiSecret等注册相关信息。 具体申请流程可参照 ShareSDK各社交平台申请APPkey的网址及申请流程汇总

如何在mob创建应用

1、打开http://mob.com/在官网首页选择登录或注册,新用户先注册,老用户直接登录。
image 注册页面如下:
image 2、注册或登录完成后,会返回至首页,点击右上角的小头像图标,选择“进入后台”,会跳转至产品中心页面。根据您的需要选择相应SDK点击进入后台。第一个ShareSDK是社会化分享SDK(不同SDK后台创建应用的App Key和App Secret是不通用的,请分别创建)
image

image 3、如果做的是应用的分享或第三方登录,请选择第一个产品:ShareSDK,点击进入ShareSDK后台,如下图所示,点击红框两处都可以创建应用
image 4、弹出“添加应用”的弹窗,填写您应用的名称(应用如果还在开发阶段,名称也还不确定的话,可以先随便写一个名称,日后可以修改),选择相应的Android 或iOS版本,点击“确定”即可,应用创建完成,此时会得到ShareSDK的App Key和App Secret。如果您一个应用同时有Android 和iOS版本,请在后台分别创建两个应用。
image 5、创建应用完成后会跳转至此页面,您如果想查看刚刚创建应用的App Key和App Secret的话,可以点击如下图所示,找到相应的APP查看
image 6、App Key和App Secret如下图所示。在ShareSDK后台创建的所有应用可以通过点击左上角的APP小三角下拉箭头查看。
image

配置:

为使得应用可以启动第三方客户端,并与之交换数据,同时可以从第三方客户端返回到应用,需要配置pluginConfigs文件的config。方法如下:

名称:ShareSDK
描述:

配置第三方平台专用的URL Scheme,使得本应用可以启动第三方客户端,并与之交换数据,同时可以从第三方客户端返回到应用

配置示例:
  <config pluginName="ShareSDK">
    <ios>
        <param key="Scheme" value="wb568898243"></param>
        <param key="Scheme" value="wb801307650"></param>
        <param key="Scheme" value="tencent100371282"></param>
        <param key="Scheme" value="QQ05FB8B52"></param>
        <param key="Scheme" value="wx4868b35061f87885"></param>
        <param key="Scheme" value="rm226427com.369Cloud.app"></param>
    </ios>
    <android>
        <param key="Scheme" value="tencent100371282"></param>
    </android>
</config>
字段描述:
1、param-Scheme:声明此字段为URL Scheme类型
2、param- value:对应Scheme类型的值。
具体平台Scheme类型的值:
  • 新浪微博 : 由新浪微博开放平台申请appKey,再加上‘wb’前缀构成。
  • 腾讯微博 : 由腾讯微博开放平台申请appKey,再加上‘wb’前缀构成。
  • QQ : 由腾讯开放平台申请appKey,再加上‘tencent’前缀构成(QQ登录需要)。
  • QQ : 格式为:'QQ' + appKey的16进制(如果appKey转换的16进制数不够8位则在前面补0,如转换的是:5FB8B52,则最终填入为:QQ05FB8B52 注意:转换后的字母要大写)(QQ分享需要)。
  • 微信 : 由微信开放平台申请的appKey构成。
  • 人人网 : 格式为'rm' + appID(在人人申请应用的AppId) + BundleID。

分享类型:

设置分享类型,仅支持QQ与微信。

  • rd.ShareSDK.MediaTypeText : 文本
  • rd.ShareSDK.MediaTypeImage : 图片
  • rd.ShareSDK.MediaTypeNews : 新闻
  • rd.ShareSDK.MediaTypeMusic : 音乐
  • rd.ShareSDK.MediaTypeVideo : 视频

分享平台:

  • rd.ShareSDK.SinaWeibo : 新浪微博
  • rd.ShareSDK.TencentWeibo : 腾讯微博
  • rd.ShareSDK.QQ : QQ
  • rd.ShareSDK.QZone : QQ空间
  • rd.ShareSDK.Wechat : 微信好友
  • rd.ShareSDK.WechatMoments : 微信朋友圈
  • rd.ShareSDK.WechatFavorite : 微信收藏
  • rd.ShareSDK.Douban : 豆瓣社区
  • rd.ShareSDK.Renren : 人人网
  • rd.ShareSDK.Kaixin : 开心网
  • rd.ShareSDK.YouDao : 有道云笔记

回调状态信息(Number):

  • rd.ShareSDK.SUCCESS:值为1,操作成功

  • rd.ShareSDK.ERROR:值为2,操作错误

  • rd.ShareSDK.CANCEL:值为3,操作取消

方法:

对象:

回调方法:

关于iOS9支持:

initShareSDK


初始化ShareSDK

rd.ShareSDK.initShareSDK(option);
说明:

初始化ShareSDK,通过option设置平台参数。

参数:
返回值:

无返回值

示例:
rd.ShareSDK.initShareSDK({appKey:'7f9f3f803d7f'});

initSina


初始化新浪微博

rd.ShareSDK.initSina(option);
说明:

初始化新浪微博,通过option设置平台参数。

参数:
返回值:

无返回值

示例:
rd.ShareSDK.initSina({appKey:'568898243',appSecret:'38a4f8204cc784f81f9f0daaf31e02e3',redirectUrl:'http://www.sharesdk.cn'});

initTencent


初始化腾讯微博

rd.ShareSDK.initTencent(option);
说明:

初始化腾讯微博,通过option设置平台参数。

参数:
返回值:

无返回值

示例:
rd.ShareSDK.initTencent({appKey:'801307650',appSecret:'ae36f4ee3946e1cbb98d6965b0b2ff5c',redirectUrl:'http://www.sharesdk.cn'});

initQZone


初始化QQ空间

rd.ShareSDK.initQZone(option);
说明:

初始化QQ空间,通过option设置平台参数。

参数:
返回值:

无返回值

示例:
rd.ShareSDK.initQZone({appKey:'100371282',appSecret:'aed9b0303e3ed1e27bae87c33761161d'});

initQQ


初始化QQ

rd.ShareSDK.initQQ(option);
说明:

初始化QQ,通过option设置平台参数。QQ本身没有授权功能,所以想要使用QQ做第三方登录必须通过QQ空间来实现!使用登录,获取用户信息等相关函数时,一定要初始化QQ空间!

参数:
返回值:

无返回值

示例:
rd.ShareSDK.initQQ({appKey:'100371282'});

initWeChat


初始化微信

rd.ShareSDK.initWeChat(option);
说明:

初始化微信,通过option设置平台参数。

参数:
返回值:

无返回值

示例:
rd.ShareSDK.initWeChat({appKey:'wx4868b35061f87885',appSecret:'64020361b8ec4c99936c0e3999a9f249'});

initRenRen


初始化人人网

rd.ShareSDK.initRenRen(option);
说明:

初始化人人网,通过option设置平台参数。

参数:
返回值:

无返回值

示例:
    rd.ShareSDK.initRenRen({appID:'226427',appKey:'fc5b8aed373c4c27a05b712acba0f8c3',appSecret:'f29df781abdd4f49beca5a2194676ca4'});

initKaiXin


初始化开心网

rd.ShareSDK.initKaiXin(option);
说明:

初始化开心网,通过option设置平台参数。

参数:
返回值:

无返回值

示例:
    rd.ShareSDK.initKaiXin({appKey:'358443394194887cee81ff5890870c7c',appSecret:'da32179d859c016169f66d90b6db2a23',redirectUrl:'http://www.sharesdk.cn/'});

initDouBan


初始化豆瓣

rd.ShareSDK.initDouBan(option);
说明:

初始化豆瓣,通过option设置平台参数。

参数:
返回值:

无返回值

示例:
    rd.ShareSDK.initDouBan({appKey:'02e2cbe5ca06de5908a863b15e149b0b',appSecret:'9f1e7b4f71304f2f',redirectUrl:'http://www.sharesdk.cn'});

initYouDao


初始化有道云笔记

rd.ShareSDK.initYouDao(option);
说明:

初始化有道云笔记,通过option设置平台参数。

参数:
返回值:

无返回值

示例:
    rd.ShareSDK.initYouDao({appKey:'dcde25dca105bcc36884ed4534dab940',appSecret:'d98217b4020e7f1874263795f44838fe',redirectUrl:'http://www.sharesdk.cn/'});

setShareContent


设置分享内容

rd.ShareSDK.setShareContent(option);
说明:

设置分享内容,通过option设置分享内容参数。注意,在使用新浪分享内容时,除文字以外,分享其他内容需要到新浪开放平台申请高级接口才可以调用.否则会导致app权限不足的问题.

参数:
返回值:

无返回值

示例:
var option = {
             content : 'stay with me sam smith hhhhhh',
             imageUrl : 'http://i.gtimg.cn/music/photo/mid_album_300/a/a/003JmNVc173vaa.jpg',
             title : 'sam smith',
             url : 'http://www.baidu.com',
             mediaType : rd.ShareSDK.MediaTypeNews,
          };

rd.ShareSDK.setShareContent(option);

setCustomNavigationBar


自定义编辑框标题栏

rd.ShareSDK.setCustomNavigationBar(option);
说明:

自定义编辑框标题栏名称、颜色或为标题栏指定图片,将编辑框的标题栏颜色与您的APP统一风格,通过option设置参数。此方法iOS支持,Android不支持。

参数:
返回值:

无返回值

示例:
var option = {
                barTitle:'welcome',
                barColor:'#00ff00',
             };
rd.ShareSDK.setCustomNavigationBar(option);

setCustomShareActionSheetItem


自定义分享菜单项,在分享菜单中加入自定义的按钮。

rd.ShareSDK.setCustomShareActionSheetItem(platform,title,iconPath,option,callback);
说明:

自定义分享菜单项,可设置名称与图标,并设置分享内容。使用showCustomShareActionSheet方法显示自定义分享菜单。

参数:
  • platform:(分享平台) 必选 设置分享平台
  • title:(String) 必选 设置自定义按钮的名称
  • iconPath:(String) 必选 设置自定义按钮的本地资源图标路径,默认为系统提供的平台相应图标。
  • option:(ShareOption) 必选 设置分享内容
  • callback:(ShareCallback) 必选 点击自定义按钮的回调函数
返回值:

无返回值

示例:
var option = {
             content : 'stay with me sam smith hhhhhh',
             imageUrl : 'http://i.gtimg.cn/music/photo/mid_album_300/a/a/003JmNVc173vaa.jpg',
             title : 'sam smith',
             url : 'http://www.baidu.com',
             mediaType : rd.ShareSDK.MediaTypeNews,
          };

rd.ShareSDK.setCustomShareActionSheetItem(rd.ShareSDK.SinaWeibo,'新浪','cpts://main/img/pic1.jpg',option,function(state,message){
 if (state == rd.ShareSDK.SUCCESS)
 {alert(message);}
 });

showCustomShareActionSheet


显示自定义分享菜单,不显示编辑框。

rd.ShareSDK.showCustomShareActionSheet();
说明:

显示自定义菜单项的分享菜单,不显示编辑框。使用setCustomShareActionSheetItem方法设置自定义菜单项。

参数:

返回值:

无返回值

示例:
rd.ShareSDK.showCustomShareActionSheet();

showShareActionSheet


显示分享菜单,显示编辑框。

rd.ShareSDK.showShareActionSheet(platforms,callback);
说明:

显示分享菜单,显示编辑框。

参数:
  • platforms:(Array) 必选 设置分享平台数组
  • callback:(ShareCallback) 必选 分享的回调函数
返回值:

无返回值

示例:
var platforms=[rd.ShareSDK.SinaWeibo,rd.ShareSDK.TencentWeibo,rd.ShareSDK.Douban,rd.ShareSDK.Renren,rd.ShareSDK.Kaixin,rd.ShareSDK.YouDao];

rd.ShareSDK.showShareActionSheet(platforms,function(state,message){
if (state == rd.ShareSDK.SUCCESS)
 {alert(message);}
});

showShareNoEditedInterface


显示分享菜单,不显示编辑框。

rd.ShareSDK.showShareNoEditedInterface(platforms,callback);
说明:

显示分享菜单,不显示编辑框。

参数:
  • platforms:(Array) 必选 设置分享平台数组
  • callback:(ShareCallback) 必选 分享的回调函数
返回值:

无返回值

示例:
var platforms = [rd.ShareSDK.SinaWeibo,rd.ShareSDK.TencentWeibo,rd.ShareSDK.Douban,rd.ShareSDK.Renren,rd.ShareSDK.Kaixin,rd.ShareSDK.YouDao];

rd.ShareSDK.showShareNoEditedInterface(platforms,function(state,message){
if (state == rd.ShareSDK.SUCCESS)
 {alert(message);}
 });

showShareEditedInterface


点击跳编辑框直接分享,不显示分享菜单。

rd.ShareSDK.showShareEditedInterface(platform,callback);
说明:

点击跳编辑框直接分享,不显示分享菜单。

参数:
返回值:

无返回值

示例:
rd.ShareSDK.showShareEditedInterface(rd.ShareSDK.SinaWeibo,function(state,message){
if (state == rd.ShareSDK.SUCCESS)
 {alert(message);}
});

shareContentNoInterface


不显示分享菜单也不显示编辑框。

 rd.ShareSDK.shareContentNoInterface(platform,callback);
说明:

不显示分享菜单也不显示编辑框。

参数:
返回值:

无返回值

示例:
rd.ShareSDK.shareContentNoInterface(rd.ShareSDK.SinaWeibo,function(state,message){
if (state == rd.ShareSDK.SUCCESS)
 {alert(message);}
 });

auth


用户授权

rd.ShareSDK.auth(platform,callback);
说明:

用户授权操作。

参数:
返回值:

无返回值

示例:
rd.ShareSDK.auth(rd.ShareSDK.SinaWeibo,function(state,message){
if (state == rd.ShareSDK.SUCCESS)
 {alert(message);}
 });

cancelAuth


用户注销授权

rd.ShareSDK.cancelAuth(platform);
说明:

用户注销授权。

参数:
  • platform:(分享平台) 必选 设置需要取消授权的平台
返回值:

无返回值

示例:
rd.ShareSDK.cancelAuth(rd.ShareSDK.SinaWeibo);

isAuthorized


检测用户是否授权

var boolResult = rd.ShareSDK.isAuthorized(platform);
说明:

检测用户是否授权

参数:
  • platform:(分享平台) 必选 设置需要检测是否授权的平台
返回值:
  • boolResult: (Bool) 如果已经授权,结果为真,否则,结果为假。
示例:
var boolResult = rd.ShareSDK.isAuthorized(rd.ShareSDK.SinaWeibo);

getUserInfo


获取用户资料

rd.ShareSDK.getUserInfo(platform,callback);
说明:

获取用户资料。

参数:
返回值:

无返回值

示例:
rd.ShareSDK.getUserInfo(rd.ShareSDK.SinaWeibo,function(state,info,error)
{
    if (state == rd.ShareSDK.SUCCESS)
        {
             var userInfo = JSON.stringify(info);
             alert(userInfo);
         } 
     else 
         {
              alert(error);
         }
 });                                                     

getFriends


获取好友列表(此接口目前只支持新浪微博、腾讯微博)

rd.ShareSDK.getFriends(platform,callback);
说明:

获取好友列表(此接口目前只支持新浪微博、腾讯微博)。

参数:
返回值:

无返回值

示例:
rd.ShareSDK.getFriends(rd.ShareSDK.TencentWeibo,function(state,friendsInfo,error)
{
if (state == rd.ShareSDK.SUCCESS)
    { 
        alert(friendsInfo[0]);
    } else
    {
        alert(error);
    }
});

isQQInstalled


检测qq是否安装

var boolResult = rd.ShareSDK.isQQInstalled();
说明:

检测qq是否安装。只有qq已安装,平台设置中才可以设置qq平台,否则应用会被苹果拒绝。

参数:

返回值:
  • boolResult: (Bool) 如果已经安装qq,结果为真,否则,结果为假。
示例:
var boolResult = rd.ShareSDK.isQQInstalled();

isWeChatInstalled


检测微信是否安装

var boolResult = rd.ShareSDK.isWeChatInstalled();
说明:

检测微信是否安装。只有微信已安装,平台设置中才可以设置微信平台,否则应用会被苹果拒绝。

参数:

返回值:
  • boolResult: (Bool) 如果已经安装微信,结果为真,否则,结果为假。
示例:
var boolResult = rd.ShareSDK.isWeChatInstalled();

PlatConfigOption


JSON对象 设置平台参数

PlatConfigOption {
 property String  appID ,
 property String  appKey ,
 property String  appSecret ,
 property String  redirectUrl , 
 property String  id , 
 property String  sortId , 
 property String  shareByAppClient , 
 property String  enable

}
说明:

设置平台参数。使用该插件必须要在不同平台申请开发者账号并创建应用,获取apikey与apiSecret等注册相关信息。具体申请流程可参照ShareSDK各社交平台申请APPkey的网址及申请流程汇总

属性:
  • appID: (String ) 应用ID (适用平台:人人网)对适用平台而言,必选。
  • appKey: (String ) 应用Key (适用平台:ShareSDK、新浪微博、腾讯微博、QQ空间、QQ、微信、豆瓣、人人、开心、有道云笔记)对适用平台而言,必选。
  • appSecret: (String ) 应用Secret (适用平台:新浪微博、腾讯微博、QQ空间、微信、豆瓣、人人、开心、有道云笔记)对适用平台而言,必选。
  • redirectUrl: (String ) 应用回调网址 (适用平台:新浪微博、腾讯微博、豆瓣、开心、有道云笔记)对适用平台而言,必选。
示例:
var option = {appKey:'568898243',appSecret:'38a4f8204cc784f81f9f0daaf31e02e3',redirectUrl:'http://www.sharesdk.cn'};

ShareOption


JSON对象 设置分享参数

ShareOption {
 property String  content ,
 property String  imageUrl ,
 property String  title ,
 property String  url ,
 property 分享类型  mediaType
}
说明:

创建分享内容对象,根据以下每个字段适用平台说明来填充参数值。具体可参照不同平台分享内容的详细说明

属性:
  • content: (String ) 必选 分享内容 (适用平台:新浪微博、腾讯微博、豆瓣、人人、开心、有道云笔记、微信、QQ)
  • imageUrl: (String ) 必选 分享图片地址(适用平台:新浪微博、腾讯微博、豆瓣、人人、开心、微信、QQ)(新浪微博如果支持网络图片,需申请高级权限)
  • title: (String ) 必选 标题 (适用平台:QQ空间、人人、微信、QQ)
  • url: (String ) 必选 分享内容的链接 (适用平台:QQ空间、人人、微信、QQ)
  • mediaType: (分享类型) 必选 分享类型 (适用平台:QQ、微信)
示例:
var option = {
            content : 'hello world',
            imageUrl : 'http://a.hiphotos.baidu.com/image/pic/item/a8ec8a13632762d0677d08c6a3ec08fa513dc60c.jpg',
            title : 'nihao',
            url : 'http://www.baidu.com',
            mediaType : rd.ShareSDK.MediaTypeNews
        };

BarConfigOption


JSON对象 设置编辑框标题栏参数

BarConfigOption {
 property String  barTitle,
 property String  barColor,
 property String  barImagePath
}
说明:

用于设置编辑框标题栏参数。

属性:
  • barTitle: (String ) 必选 编辑框标题栏标题
  • barColor: (String ) 可选 编辑框标题栏颜色, 与barImagePath字段不可共用
  • barImagePath: (String ) 可选 编辑框标题栏背景图片,与barColor字段不可共用
示例:
var option = {
            barTitle:'welcome',
            barColor:'#00ff00',
         };

ShareCallback


用户分享的回调函数

function ShareCallback(state,message) {    
}
参数:
  • state:(回调状态信息) 必选 状态信息
  • message: ( String ) 必选 返回操作结果信息。

AuthCallback


用户授权的回调函数

function AuthCallback(state,message) {    
}
参数:
  • state:(回调状态信息) 必选 状态信息
  • message: ( String ) 必选 返回操作结果信息。

GetUserInfoCallback


获取用户资料的回调函数

function GetUserInfoCallback(state,message,error) {    
}
参数:
  • state:(回调状态信息) 必选 状态信息
  • message: ( JSON ) 必选 用户资料信息。具体字段参照相关第三方平台。
  • error: ( String ) 必选 错误信息。

GetFriendsCallback


获取用户好友列表的回调函数

function GetFriendsCallback(state,message,error) {    
}
参数:
  • state:(回调状态信息) 必选 状态信息
  • message: ( Array ) 必选 包含用户好友资料(JSON数据)的数组。
  • error: ( String ) 必选 错误信息。
返回值:

无返回值

添加HTTP请求白名单


为了强制增强数据访问安全,iOS9默认会把大部分的HTTP请求都改为HTTPS请求。本插件基于ShareSDK集成。

对ShareSDK来说,具体表现可能是,无法授权、分享、获取用户信息等。还可能造成我们的编辑界面里传http之类的网络图片的时候,我们的编辑界面不会显示图片截图,解决的办法或者全面关闭https,允许使用http请求;或者把图片的域添加;又或者选择使用https的图片。

具体设置可参照适配iOS9系统.

所以,如果想在iOS9环境下使用本插件.则需要在pluginConfig.xml中进行配置。配置方式如下(以新浪微博为例):

<!--找到InfoPlistEdit节点 在这里设置HTTPS相关参数.(以新浪微博为例)-->
<config pluginName="InfoPlistEdit">
    <ios>
        <!--true:表示开启http协议模式;false:表示关闭http协议模式,采用https请求协议,需要添加HTTP请求白名单-->
        <param key="AllowAllHttpConnection" value="false"></param>
        <!--节点HttpWhiteList里填写的协议可以访问http请求.-->
        <param key="HttpWhiteList">
            <string>weibo.com</string>
            <string>weibo.cn</string>
            <string>sina.com.cn</string>
        </param>
    </ios>
</config>
说明:

将以上配置参数拷贝至项目中的pluginConfig.xml文件中即可.若已有相同的配置项.则不需要再次拷贝.在原基础上添加即可.

添加URLScheme白名单


苹果官方指出在iOS9.0及以上系统中,如果使用canOpenURL方法,该方法所涉及到的URL scheme必须在工程中将它们列为白名单,否则不能使用。

具体设置可参照适配iOS9系统.

所以,如果想在iOS9环境下使用本插件.则需要在pluginConfig.xml中进行配置。配置方式如下(以新浪微博为例):

<config>
   <ios>
      <param key="SchemeWhiteList">
          <string>wechat</string>
          <string>weixin</string>
          <string>alipay</string>
          <string>alipayshare</string>
          <string>sinaweibo</string>
          <string>sinaweibohd</string>
          <string>sinaweibosso</string>
          <string>sinaweibohdsso</string>
          <string>weibosdk</string>
          <string>weibosdk2.5</string>
          <string>mqq</string>
          <string>mqqapi</string>
          <string>mqqwpa</string>
          <string>mqqbrowser</string>
          <string>mttbrowser</string>
          <string>mqqOpensdkSSoLogin</string>
          <string>mqqopensdkapiV2</string>
          <string>mqqopensdkapiV3</string>
          <string>wtloginmqq2</string>
          <string>mqzone</string>
          <string>mqzoneopensdk</string>
          <string>mqzoneopensdkapi</string>
          <string>mqzoneopensdkapi19</string>
          <string>mqzoneopensdkapiV2</string>
          <string>mqqapiwallet</string>
          <string>mqqopensdkfriend</string>
          <string>mqqopensdkdataline</string>
          <string>mqqgamebindinggroup</string>
          <string>mqqopensdkgrouptribeshare</string>
          <string>tencentapi.qq.reqContent</string>
          <string>tencentapi.qzone.reqContent</string>
          <string>kaixin001.com</string>
          <string>kaixin001.com.cn</string>
      </param>
    </ios>
</config>
说明:

将以上配置参数拷贝至项目中的pluginConfig.xml文件中即可.若已有相同的配置项.则不需要再次拷贝.在原基础上添加即可.