《分享系统》

分享系统介绍

分享系统目前支持 ShareSDK 的一键分享(只支持部分平台)、微信、Facebook。

相关接口

设置监听

分享系统存在回调信息,需要设置监听。

_pShare = AgentManager::getInstance()->getSharePlugin();
if(!_pShare) return;
_pShare->setResultListener(this);

开发者需要重写 onShareResult 回调方法

class Share:public ShareResultListener
{
public:
    virtual void onShareResult(ShareResultCode ret, const char* msg);
};
void Share::onShareResult(ShareResultCode ret, const char* msg)
{
    LOGD("onShareResult %d",ret);
    switch(ret)
    {
    case kShareSuccess://分享成功回调
        LOGD("onShareResult success");
        break;
    case kShareFail://分享失败回调
        LOGD("onShareResult fail");
        break;
    case kShareCancel://分享取消回调
        LOGD("onShareResult cancel");
        break;
    case kShareNetworkError://分享网络出错回调
        LOGD("onShareResult error");
        break;
    default:
        break;
    }
}

分享

void share(TShareInfo info);
TShareInfo 实际上是一个 map,记录了分享的一些相关的信息。
参数表如下

参数 参数说明 备注
title title 标题,在印象笔记、邮箱、信息、微信(包括好友、朋友圈和收藏)、易信(包括好友、朋友圈)、人人网和 QQ空 间使用 ShareSDK、微信、Facebook
titleUrl titleUrl 是标题的网络链接,仅在人人网和 QQ 空间使用 ShareSDK(Android)
site site 是分享此内容的网站名称,仅在 QQ 空间使用 ShareSDK(Android)
siteUrl siteUrl 是分享此内容的网站地址,仅在 QQ 空间使用 ShareSDK(Android)
text text 是分享文本,所有平台都需要这个字段 ShareSDK、微信、Facebook
imagePath imagePath 是本地的图片路径,除 Linked-In 外的所有平台都支持这个字段 ShareSDK、微信、Facebook
imageUrl imageUrl是图片的网络路径,新浪微博、人人网、QQ 空间和 Linked-In 支持此字段 ShareSDK(iOS)、Facebook
comment comment 是我对这条分享的评论,仅在人人网和 QQ 空间使用 ShareSDK(Android)
url 链接,在QQ空间、人人、微信、QQ 使用 ShareSDK、微信、Facebook
mediaType mediaType 是个枚举分享类型,0 文本,1 图片,2 新闻/网址,3 音乐,4 视频,5 应用,6 非 GIF 消息,7 GIF 消息,8 多媒体 微信、Facebook
shareTo shareTo 是分享到什么位置,0 聊天 1 朋友圈 2 收藏 微信
thumbImage thumbImage 是本地的缩略图路径 微信
thumbSize thumbImage 是缩略图尺寸(不超过 127) 微信(Android)
videoPath videoPath 是本地的视频路径 Facebook

分享回调说明

回调信息 code msg
分享成功 kShareSuccess null或者错误信息的简单描述
分享取消 kShareCancel null或者错误信息的简单描述
分享失败 kShareFail null或者错误信息的简单描述
分享网络出现错误 kShareNetworkError null或者错误信息的简单描述

举例说明

ProtocolShare* _pShare = AgentManager::getInstance()->getSharePlugin();
if(!_pShare) return;
std::map<std::string, std::string> info;
// title标题,印象笔记、邮箱、信息、微信、人人网和QQ空间使用
info["title"] = "ShareSDK是一个神奇的SDK";
// titleUrl是标题的网络链接,仅在人人网和QQ空间使用
info["titleUrl"] = "http://sharesdk.cn";
// site是分享此内容的网站名称,仅在QQ空间使用
info["site"] = "ShareSDK";
// siteUrl是分享此内容的网站地址,仅在QQ空间使用
info["siteUrl"] = "http://sharesdk.cn";

// imagePath是图片的本地路径,Linked-In以外的平台都支持此参数,iOS下直接传文件名
//info["imagePath"] = "123.png";  //该图片文件需要拖入Xcode工程中
info["imagePath"] = "/sdcard/test.png";
// imageUrl是图片的网络路径,新浪微博,人人网,QQ空间支持此字段
info["imageUrl"] = "http://www.baidu.com/img/bdlogo.png?tn=63090008_1_hao_pg";

// url仅在微信(包括好友和朋友圈)中使用
info["url"] ="http://sharesdk.cn";

// text是分享文本,所有平台都需要这个字段
info["text"] = "ShareSDK支持如微信、新浪微博、腾讯微博等社交平台";
// comment是我对这条分享的评论,仅在人人网和QQ空间使用
info["comment"] = "无";

//微信SDK分享需要使用到的参数
info["mediaType"] = "1"; //分享类型: 0-文字 1-图片 2-网址  
info["shareTo"] = "2"; //分享到:0-聊天 1-朋友圈 2-收藏  

_pShare->share(info);

【评论区】