10/27/2025 18:02:31
分享模块
一、概述
分享模块是 MSDK 的一个社交功能模块,主要功能包括:
- 发送消息功能,消息类型包括好友邀请、文字、链接、图片、音乐、视频、小程序、视频号、状态等。微信渠道下部分类型可以给指定好友发送。
 - 分享功能(微信朋友圈、微信游戏圈、QQ 空间、Facebook TimeLine、Twitter),分享类型包括文字、图片、链接、邀请、音乐、视频。
 
支持的渠道有:
其中,发送消息功能分为两类:
- 静默发送 (Silence),调用 API 后直接分享,在应用后台执行并无弹窗
 - 弹窗发送 (Dialog),调用 API 后弹出分享框,用户需要进一步操作才能分享
 
| 发送类型 | 微信好友 | 微信状态 | 微信视频号 | QQ小世界 | QQ好友 | System | Line | SMS | |||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 文本 (Friend_REQ_TEXT) | 支持 | iOS支持 | 支持 | 支持 | 支持 | ||||||
| 链接 (Friend_REQ_LINK) | 支持 | 支持 | 支持 | ||||||||
| 图片 (Friend_REQ_IMG) | 支持 | 支持 | 支持 | Android支持 | |||||||
| 视频 (Friend_REQ_VIDEO) | Android支持 | ||||||||||
| 邀请 (Friend_REQ_INVITE) | 支持 | 支持 | |||||||||
| 音乐 (Friend_REQ_MUSIC) | 支持 | 支持 | |||||||||
| 小程序 (Friend_REQ_MINI_APP) | 支持 | 支持(5.6.000 版本及以上) | |||||||||
| 静默邀请 (Friend_REQ_INVITE_SILENT) | 支持 | ||||||||||
| 拉起小程序 (FRIEND_REQ_PULL_UP_MINI_APP) | 支持 | 支持(5.30.000 版本及以上) | |||||||||
| ark分享 (Friend_REQ_ARK) | 支持 | ||||||||||
| 业务功能拉起 (Friend_REQ_OPEN_BUSINESS_VIEW) | 支持 | ||||||||||
| 状态 (FRIEND_REQ_STATE_IMAGE) | 支持 | ||||||||||
| 视频号直播(Friend_REQ_WX_CHANNEL_START_LIVE) | 支持 | ||||||||||
| QQ小世界(Friend_REQ_COMMON_SHARE) | 支持 | ||||||||||
| 微信原生分享(Friend_REQ_WX_NATIVE_GAME_PAGE) | 支持 | ||||||||||
| 微信状态-跳转到小程序(FRIEND_REQ_STATE_IMAGE_OPEN_MINI_APP) | 支持 | 
注意:Facebook 不再支持发送消息到 Messenger,故 MSDK 不再维护 Facebook sendMessage 接口,请项目组谨慎使用。
| 分享类型 | 微信 朋友圈  | 
微信 游戏圈  | 
微信视频号 | 微信状态 | QQ空间 | System | Line | ||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 文本 (Friend_REQ_TEXT) | 支持 | 支持 | Android支持 | 支持 | 支持(5.33.000 版本及以上) | Android支持 | |||||
| 链接 (Friend_REQ_LINK) | 支持 | 支持 | 支持 | Android支持 | iOS支持 | 支持(5.33.000 版本及以上) | |||||
| 图片 (Friend_REQ_IMG) | 支持 | 支持 | 支持 | Android支持 | 支持(5.33.000 版本及以上) | Android支持 | |||||
| 音乐 (Friend_REQ_MUSIC) | 支持 | ||||||||||
| 邀请 (Friend_REQ_INVITE) | 支持 | ||||||||||
| 视频 (Friend_REQ_VIDEO) | Android支持 (MSDK5.7.001 iOS新增支持)  | 
支持 | 支持(5.33.000 版本及以上) | ||||||||
| 微信游戏圈图片分享(Friend_REQ_WX_GAMELINE) | 支持 | ||||||||||
| 小程序 (Friend_REQ_MINI_APP) | 支持(5.6.000 版本及以上) | ||||||||||
| 视频号 (Friend_REQ_WX_CHANNEL_SHARE_VIDEO) | 支持 | ||||||||||
| 状态 (FRIEND_REQ_STATE_IMAGE) | 支持 | ||||||||||
| 微信原生分享 (Friend_REQ_WX_NATIVE_GAME_PAGE) | 支持 | ||||||||||
| 微信状态-跳转到小程序 (FRIEND_REQ_STATE_IMAGE_OPEN_MINI_APP) | 支持 | 
二、接入向导
2.1 注册回调
1)功能描述
MSDK 好友模块的回调,游戏需要注册回调函数进行处理;通过平台侧拉取的信息,手Q是实时的,微信可能会有延迟,延迟时间是0-4小时。
2)接口声明
/// 基本结果的回调
public static event OnMSDKRetEventHandler<MSDKBaseRet> FriendRetEvent;
/// 查找好友的回调
public static event OnMSDKRetEventHandler<MSDKFriendRet> QuereyFriendEvent;class MSDKFriendObserver
{
public:
	/// 基本结果的回调
    virtual void OnDeliverMessageNotify(const MSDKBaseRet &baseRet) {};
    /// 查找好友的回调
    virtual void OnQueryFriendNotify(const MSDKFriendRet &friendRet) {};
};3)示例代码
MSDKFriend.FriendRetEvent += OnFriendRetEvent;
MSDKFriend.QuereyFriendEvent += OnQuereyFriendEvent;
public void OnFriendRetEvent(MSDKBaseRet baseRet)
{
	string methodTag = "";
	if (baseRet.MethodNameId == (int)MSDKMethodNameID.MSDK_FRIEND_SHARE) {
		methodTag = "Share";
	} else if (baseRet.MethodNameId == (int)MSDKMethodNameID.MSDK_FRIEND_SEND_MESSAGE) {
		methodTag = "SendMessage";
	} else if (baseRet.MethodNameId == (int)MSDKMethodNameID.MSDK_FRIEND_ADD_FRIEND) {
		methodTag = "AddFriend";
	}
	SampleInstance.showRetDialog(methodTag, baseRet);
}
//销毁的时候需要移除监听
private void OnDestroy()
{
	MSDKFriend.FriendRetEvent -= OnFriendRetEvent;
	MSDKFriend.QuereyFriendEvent -= OnQuereyFriendEvent;
}MSDKFriend::SetFriendObserver(new MyFriendObserver());
// 好友模块监听
class MyFriendObserver : public MSDKFriendObserver {
public:
    void OnDeliverMessageNotify(const MSDKBaseRet &baseRet) {
        UMSDKDemoBase::showNormalAlert(baseRet);
    };
    void OnQueryFriendNotify(const MSDKFriendRet &friendRet) {
        UMSDKDemoBase::showNormalAlert(friendRet);
    };
};4)数据结构
MSDKFriendRet 详解
继承自 MSDKBaseRet,包含基础的信息
| 成员变量名称 | 类型 | 说明 | 
|---|---|---|
| friendInfoList | List<MSDKPersonInfo> | 好友列表 | 
三、发送消息给好友
1)功能描述
发送消息给指定好友,已经登录的情况下,渠道入参可以不填写。
[danger] Facebook 不再支持发送消息到 Messenger,故 MSDK 不再维护 Facebook sendMessage 接口,请项目组谨慎调用。
Facebook 相关文档:https://developers.facebook.com/docs/sharing/messenger
微信渠道下,以下类型支持指定好友发送:文字、图片、音乐、链接、邀请、小程序、微信原生分享,需在请求结构体中带上指定好友的 openid;若 openid 为空,则会拉起微信好友列表。
openid分为两种:
| 后台获取 | 用法 | |
|---|---|---|
| gopenid | 只有微信同玩好友可以拿到gopenid | 使用gopenid进行分享,可以在extraJson中加上 {"isFriendInGame":true} (非必须) | 
| sopenid | 微信密友(同玩和非同玩)都可以拿到sopenid | 使用sopenid进行分享,必须在extraJson中加上 {"isFriendInGame":false} (必须) | 
[warning] 指定好友分享 注意事项
目前需要微信APP版本 6.7.2 及以上才支持指定好友定向分享。
微信APP版本过低时,不支持指定好友定向分享,拉起微信后会出现"不支持的分享类型”或“未知的应用请求”页面。
2)接口声明
public static void SendMessage(MSDKFriendReqInfo info, string channel = "")public static void SendMessage(const MSDKFriendReqInfo &reqInfo, const string &channel = "");3)入参说明
| 参数名称 | 参数类型 | 说明 | 
|---|---|---|
| info | MSDKFriendReqInfo | 好友模块请求结构体,主要包含请求对象,请求信息等重要入参 | 
| channel | string | 渠道信息,比如“WeChat”、“QQ"、"Line" | 
3.1 发送文本
支持渠道:
- 微信
 - Line
 - SMS
 - Garena
 
[info]
(1)文本定向分享只支持微信,可以通过 User 传入目标对象的 openid;
(2)微信渠道分享的文本大小不能超过 10k;
| 参数名 | 参数类型 | 参数说明 | 
|---|---|---|
| Type | int | 分享指定的消息类型,必填 | 
| Desc | string | 概述,简单描述分享的目的,必填 | 
| User | string | 当使用 sopenid 时,必须在extraJson中加上 {\"isFriendInGame\":false};当使用 gopenid 时,可以在extraJson中加上 {\"isFriendInGame\":true} (非必须) | 
var reqInfo = new MSDKFriendReqInfo
{
    Type = FriendReqType.Friend_REQ_TEXT,
    Desc = "MSDK,是互娱增值服务部为游戏提供公共组件和服务库的平台",
    // 微信定向分享时,User 为必填参数  
    User = "gopenid 或者 sopenid",
    // 当 User 传入 sopenid 时,isFriendInGame 为必填字段
    ExtraJson = "{\"isFriendInGame\":false}"
};
MSDKFriend.SendMessage (reqInfo, "WeChat");MSDKFriendReqInfo info;
info.type = kMSDKFriendReqTypeText;
info.desc = "MSDK,是互娱增值服务部为游戏提供公共组件和服务库的平台";
// 微信定向分享时,User 为必填参数
info.user = "gopenid 或者 sopenid";
// 当 User 传入 sopenid 时,isFriendInGame 为必填字段
info.extraJson = "{\"isFriendInGame\":false}"; 
MSDKFriend::SendMessage(info, "WeChat");3.2 发送链接
支持渠道:
- 微信
 - Garena
 
[info] 链接定向分享支持微信,可以通过 User 传入目标对象的 openid。
| 参数名 | 类型 | 参数说明 | 
|---|---|---|
| Type | int | 分享指定的消息类型,必填 | 
| User | string | 当使用 sopenid 时,必须在 extraJson 中加上 {\"isFriendInGame\":false}; 当使用 gopenid 时,可以在 extraJson 中加上 {\"isFriendInGame\":true} (非必须)  | 
| Title | string | 分享的标题 QQ 渠道必填 微信渠道 Android Title 和 Desc 不可以同时为空 其他渠道选填  | 
| Desc | string | 分享的内容 微信渠道 Android Title 和 Desc 不可以同时为空 其他渠道选填  | 
| Link | string | 分享的链接,必填 | 
| ThumbPath | string | 缩略图的 URL,选填 | 
| ExtraJson | string | 扩展字段,用于透传 game_data 字段,选填 | 
| game_data | string | 游戏自定义透传数据,仅支持 QQ,选填 | 
var reqInfo = new MSDKFriendReqInfo
{
    Title = "分享的标题",
    Type = FriendReqType.Friend_REQ_LINK,
    Link = "https://www.qq.com",
    ThumbPath = "缩略图 URL",
    // 微信定向分享时,User 为必填参数  
    User = "gopenid 或者 sopenid",
    // 当 User 传入 sopenid 时,isFriendInGame 为必填字段
    ExtraJson = "{\"isFriendInGame\":false,\"game_data\":\"游戏自定义数据\"}"
};
MSDKFriend.SendMessage (reqInfo, "QQ");MSDKFriendReqInfo info;
info.title = "分享的标题”;
info.type = kMSDKFriendReqTypeLink;
info.link = "https://www.qq.com";
// 微信定向分享时,User 为必填参数
info.user = "gopenid 或者 sopenid";
// 当 User 传入 sopenid 时,isFriendInGame 为必填字段
info.thumbPath = "缩略图 URL";
info.extraJson = "{\"isFriendInGame\":false,\"game_data\":\"游戏自定义数据\"}"; 
MSDKFriend::SendMessage(info, "QQ");3.3 发送图片
支持渠道:
- 微信
 - Line
 - WhatsApp(仅 Android 平台)
 - Garena
 
[info]
(1)QQ渠道 图片大小不超过 5M;
(2)WeChat渠道 图片不超过 3M;
(3)发送图片时,要注意 file_provider_paths.xml 配置与图片存储位置相匹配。详情可参考:点击跳转;
| 参数名 | 类型 | 参数说明 | 
|---|---|---|
| Type | int | 分享指定的消息类型,必填 | 
| User | string | 当使用 sopenid 时,必须在extraJson中加上 {\"isFriendInGame\":false};当使用 gopenid 时,可以在extraJson中加上 {\"isFriendInGame\":true} (非必须) | 
| ImagePath | string | 图片的路径,支持本地或网络图片,必填 | 
| ThumbPath | string | 缩略图路径,MSDK 5.13 之前版本,图片大小不超过 32k。MSDK 5.13 及之后版本,图片大小不超过 128k,iOS 必填,Android 选填 | 
| ExtraJson | string | 扩展字段,用于透传 isFriendInGame 字段,选填 | 
var reqInfo = new MSDKFriendReqInfo
{
    Type = FriendReqType.Friend_REQ_IMG,
    // 微信定向分享时,User 为必填参数  
    User = "gopenid 或者 sopenid",
    // 当 User 传入 sopenid 时,isFriendInGame 为必填字段
    ExtraJson = "{\"isFriendInGame\":false}",
    ImagePath = "/storage/emulated/0/Android/data/游戏包名/img.png"
};
MSDKFriend.SendMessage (reqInfo, "Line");MSDKFriendReqInfo info;
info.type = kMSDKFriendReqTypeIMG;
// 微信定向分享时,User 为必填参数
info.user = "gopenid 或者 sopenid";
// 当 User 传入 sopenid 时,isFriendInGame 为必填字段
info.extraJson = "{\"isFriendInGame\":false}”;
info.imagePath = "http://mat1.gtimg.com/www/qq2018/imgs/qq_logo_2018x2.png";
MSDKFriend::SendMessage(info, "WeChat");3.4 发送小程序
支持渠道:
- 微信
 - QQ(QQ 从 5.6.000 版本开始支持)
 
微信渠道
| 参数名 | 类型 | 参数说明 | 
|---|---|---|
| Type | int | 分享指定的消息类型,必填 | 
| Link | string | 旧版微信中打开小程序时,跳转的页面URL(可填任意 URL),必填 | 
| ThumbPath | string | 缩略图路径,MSDK 5.13 之前版本,图片大小不超过 32k。MSDK 5.13 及之后版本,图片大小不超过 128k,必填 | 
| ExtraJson | string | 扩展字段,用于透传 media_tag_name、game_data、weapp_id、mini_program_type、with_share_ticket、is_updatable_message、ext_info 字段,必填 | 
| weapp_id | string | 小程序原始 id,如 gh_e9f675597c15,必填 | 
| mini_program_type | int | 指定小程序版本,分为 Release(0),Test(1),Preview(2)三种版本类型,与小程序版本对应,选填 | 
| media_tag_name | string | 此值会传到微信供统计用,详情 点击这里,选填 | 
| game_data | string | 游戏分享时传入的自定义值,通过此消息拉起游戏会通过应用唤醒回调中扩展字段回传给游戏,即透传参数;不需要的话可以填写空串;填写示例:\"game_data\":{\"loobyid\":\"123456\",\"roomid\":\"123456\"} 或者 \"game_data\":\"gameData\,选填 | 
| is_updatable_message | int | 是否是动态消息,从 MSDK 5.36 开始支持动态消息分享场景,该场景下需要填 1 | 
| with_share_ticket | int | 是否使用带 shareTicket 的转发,动态消息分享场景下需要填 1 | 
| ext_info | string | 动态消息分享场景下需填写,包含 activity_id、parameter_list 字段。其中,activity_id 是在微信后台创建的 Activity ID,parameter_list 对应动态消息模版信息。 | 
QQ渠道
| 参数名 | 类型 | 参数说明 | 
|---|---|---|
| Type | int | 分享指定的消息类型,必填 | 
| Title | string | 分享小程序的标题,必填 | 
| Desc | string | 分享小程序的内容描述,必填 | 
| Link | string | 跳转的页面URL(可填任意 URL),必填 | 
| ThumbPath | string | 缩略图路径,必填 | 
| ExtraJson | string | 扩展字段,用于透传 mini_appid、mini_path、mini_webpage_url、mini_program_type、with_share_ticket、 字段,必填 | 
| mini_appid | string | 小程序的AppId,必填 | 
| mini_path | string | 小程序的展示路径,不填唤起默认小程序首页,可携带参数,例:pages/main/index?a=123&b=123,必填 | 
| mini_webpage_url | string | 兼容低版本的网页链接,MSDK 会自动把 link 值赋给 mini_webpage_url(分享到空间时,link 值会赋给 targetURL),游戏无需在 extraJson 中传入该参数,选填 | 
| mini_program_type | int | 小程序的类型,默认正式版(3),可选测试版(1),选填 | 
// 微信小程序分享
var reqInfo = new MSDKFriendReqInfo
{
    Type = FriendReqType.Friend_REQ_MINI_APP,
    ThumbPath = "http://mat1.gtimg.com/www/qq2018/imgs/qq_logo_2018x2.png",
    ExtraJson = "{\"media_tag_name\":\"MSG_INVITE\",\"message_action\":\"WECHAT_SNS_JUMP_URL\",\"game_data\":\"gameData\",\"weapp_id\":\"gh_e9f675597c15\",\"is_updatable_message\":1,\"with_share_ticket\": 1,\"ext_info\":{\"activity_id\":\"1263_aV9TIY1EQTg6geNFEq4LI14cL6jYVcyoCvGOSEvVX9VF28IVEJ9KnWAIcKlLHPdyf14Zmo4JbXMpSYvN\",\"parameter_list\":\"[{\\\"name\\\":\\\"member_count\\\", \\\"value\\\":\\\"2\\\"}, {\\\"name\\\": \\\"room_limit\\\", \\\"value\\\":\\\"4\\\"}]\"}}",
    Link = "https://www.qq.com"
};
MSDKFriend.SendMessage (reqInfo, "WeChat");
// QQ 小程序分享
var reqInfo = new MSDKFriendReqInfo
{
    Type = FriendReqType.Friend_REQ_MINI_APP,
    Title = "QQ小程序分享",
    Desc = "QQ小程序Desc",
    ThumbPath = "http://mat1.gtimg.com/www/qq2018/imgs/qq_logo_2018x2.png",
    Link = "http://www.qq.com";
    ExtraJson = "{\"mini_appid\":\"1109878856\",\"mini_path\":\"pages/index/index\",\"mini_webpage_url\":\"www.qq.com\",\"mini_program_type\":3}"
};
MSDKFriend.SendMessage(reqInfo, "QQ");// 微信小程序分享
MSDKFriendReqInfo info;
info.type = kMSDKFriendReqTypeMiniApp;
info.extraJson = "{\"media_tag_name\":\"MSG_INVITE\",\"message_action\":\"WECHAT_SNS_JUMP_URL\",\"game_data\":\"gameData\",\"weapp_id\":\"gh_e9f675597c15\"\"is_updatable_message\":1,\"with_share_ticket\": 1,\"ext_info\":{\"activity_id\":\"1263_aV9TIY1EQTg6geNFEq4LI14cL6jYVcyoCvGOSEvVX9VF28IVEJ9KnWAIcKlLHPdyf14Zmo4JbXMpSYvN\",\"parameter_list\":\"[{\\\"name\\\":\\\"member_count\\\", \\\"value\\\":\\\"2\\\"}, {\\\"name\\\": \\\"room_limit\\\", \\\"value\\\":\\\"4\\\"}]\"}}";
info.link = "http://www.qq.com?gamedata=67890";
info.thumbPath = "http://mat1.gtimg.com/www/qq2018/imgs/qq_logo_2018x2.png”;
MSDKFriend::SendMessage(info, "WeChat");
// QQ 小程序分享
MSDKFriendReqInfo reqInfo;
reqInfo.type = kMSDKFriendReqTypeMiniApp;
reqInfo.title = "QQ小程序分享";
reqInfo.desc = "QQ小程序Desc";
reqInfo.thumbPath = "http://mat1.gtimg.com/www/qq2018/imgs/qq_logo_2018x2.png";
reqInfo.link = "http://www.qq.com";
reqInfo.extraJson = "{\"mini_appid\":\"1109878856\",\"mini_path\":\"pages/index/index\",\"mini_webpage_url\":\"www.qq.com\",\"mini_program_type\":3}";
MSDKFriend::SendMessage(reqInfo, "QQ");[info]
微信小程序分享
(1)type:必填,分享类型:Friend_REQ_MINI_APP;
(2)thumbPath:Android必填/iOS选填,分享的小程序 icon 图(iOS分享未入参时,分享的小程序 icon 图为空);
(3)link:必填,旧版微信中打开小程序时,跳转的页面URL(可填任意 URL);
(4)extraJson:扩展字段,小程序特别入参放在 extraJson 中,详见 微信小程序特别入参;
(5)mediaPath:选填,小程序 path,可通过该字段指定跳转小程序的某个页面(若填空字符串,默认跳转首页)。对于小游戏,没有页面,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar";
(6)透传自定义参数说明:拼接在 MediaPath 中透传,参考 url 的 query 格式,长度 100-200k,太长会导致跨进程传输失败;如:MediaPath:pages/index/index?k1=v1&k2=v2,k1=v1&k2=v2 为自定义透传参数;
(7)动态消息分享从 MSDK 5.36 版本开始支持,接入事项详见:https://doc.weixin.qq.com/doc/w3_ADQAaAbmAE4gQXv7rldTyqWKgaXWZ?scode=AJEAIQdfAAosStD3umADQAaAbmAE4;
QQ 小程序分享
(1)type:必填,分享类型:Friend_REQ_MINI_APP;
(2)thumbPath:选填,分享小程序时 icon 图(未入参时,分享的小程序 icon 图为空);
(3)link:必填,兼容低版本的网页链接(可填任意 URL);
(4)extraJson:扩展字段,小程序特别入参放在 extraJson 中,详见 QQ 小程序特别入参;
(5)透传自定义参数说明:拼接在 ExtraJson 中 mini_path 透传,参考 url 的 query 格式;如:mini_path:pages/index/index?k1=v1&k2=v2,k1=v1&k2=v2 为自定义透传参数;
3.5 发送音乐
支持渠道
- 微信
 
var reqInfo = new MSDKFriendReqInfo
{
	Type = FriendReqType.Friend_REQ_MUSIC,
	Title = "it's title",
	Desc = "it's desc",
	ImagePath = "http://mat1.gtimg.com/www/qq2018/imgs/qq_logo_2018x2.png",
	MediaPath = "http://music.163.com/song/media/outer/url?id=317151.mp3",
	Link = "http://y.qq.com/#type=song&mid=000cz9pr0xlAId"
};
MSDKFriend.SendMessage (reqInfo, "WeChat");MSDKFriendReqInfo info;
info.type = kMSDKFriendReqTypeMusic;
info.title = "it's title";
info.desc = "it's desc";
info.imagePath = "http://mat1.gtimg.com/www/qq2018/imgs/qq_logo_2018x2.png";
info.mediaPath = "http://music.163.com/song/media/outer/url?id=317151.mp3";
info.link = "http://y.qq.com/#type=song&mid=000cz9pr0xlAId";
MSDKFriend::SendMessage(info, "QQ");[info]
(1)Title,必填,音乐消息的标题;
(2)Desc,必填,音乐消息的概述;
(3)ImagePath,选填,需填写图片,大小不能超过32K;
(4)MediaPath,必填,需填写音乐数据网络Url(例http:// *.mp3),长度不能超过10K;
(5) Link,必填,需填写点击消息后跳转的网络Url,长度不能超过10K;
3.6 发送邀请
支持渠道:
- 微信,支持拉起对应好友的聊天界面
 - QQ,不支持定向分享至好友
 
| 参数名 | 参数类型 | 参数说明 | 
|---|---|---|
| Title | int | 分享的标题,必填 | 
| Desc | desc | 分享的内容,选填 | 
| Type | int | 分享指定的消息类型,必填 | 
| User | string | 当使用 sopenid 时,必须在extraJson中加上 {\"isFriendInGame\":false};当使用 gopenid 时,可以在extraJson中加上 {\"isFriendInGame\":true} (非必须) | 
| Link | string | QQ渠道,必填,填写游戏中心详情页 WeChat渠道,Android 为无用字段。iOS选填,如果填写为空,点击消息会拉起游戏。如果填写为其他任意地址,则点击消息会跳转至该地址  | 
| ThumbPath | string | 缩略图,支持本地或网络图片,图片大小不超过1M,必填 | 
| ExtraJson | string | 扩展字段,透传游戏自定义数据,平台会将透传数据做转义处理。其中自定义透传字段 game_data ,Android 为必填项,内容不为空,MSDKPIX5.39.100 iOS 新增 isOnline 参数取消 QQ 缩略图 1M 限制,格式参考示例代码 | 
var reqInfo = new MSDKFriendReqInfo
{
    Type = FriendReqType.Friend_REQ_INVITE,
    Title = "分享的标题",
    Desc = "分享的内容",
    // 微信定向分享时,User 为必填参数  
    User = "gopenid 或者 sopenid",
    ThumbPath = "http://mat1.gtimg.com/www/qq2018/imgs/qq_logo_2018x2.png",
    Link = "http://gamecenter.qq.com/gcjump?appid=100703379&pf=invite&from=iphoneqq&plat=qq&originuin=111&ADTAG=gameobj.msg_invite",
    ExtraJson = "{\"game_data\":\"游戏自定义透传数据\",\"isFriendInGame\":false,\"isOnline\":true}";
};
MSDKFriend.SendMessage (reqInfo, "QQ");MSDKFriendReqInfo info;
info.type = kMSDKFriendReqTypeInvite;
// 微信定向分享时,User 为必填参数 
info.user = "gopenid 或者 sopenid";
info.title = "分享的标题";
info.desc = "分享的内容";
info.link = "http://gamecenter.qq.com/gcjump?appid=100703379&pf=invite&from=iphoneqq&plat=qq&originuin=111&ADTAG=gameobj.msg_invite";
info.thumbPath = "http://mat1.gtimg.com/www/qq2018/imgs/qq_logo_2018x2.png";
info.extraJson = "{\"game_data\":\"游戏自定义透传数据\",\"isFriendInGame\":false,\"isOnline\":true}”;
MSDKFriend::SendMessage(info, "WeChat");[info] QQ 和 微信的游戏自定义数据可以通过 game_data 来透传,当触发 MSDK_LOGIN_WAKEUP 事件时,解析 MSDKBaseRet 中的 ExtraJson 字段即可。
3.7 静默发送邀请
支持渠道:
| 参数名 | 类型 | 参数说明 | 
|---|---|---|
| Type | int | 分享指定的消息类型,必填 | 
| User | string | 好友的 gopenid,必填 | 
| Title | string | 分享的标题,选填 | 
| Desc | string | 分享的内容,选填 | 
| Link | string | 手Q游戏中心详情页链接,必填 | 
| ImagePath | string | 分享图片的 URL,必填 | 
| ExtraJson | string | 扩展字段,用于透传 game_tag 字段,必填 | 
| game_tag | string | 平台分享类型统计,由平台侧分配,需同手Q平台沟通后填写,必填 | 
var reqInfo = new MSDKFriendReqInfo
{
    Type = FriendReqType.Friend_REQ_INVITE_SILENT,
    User = "好友的 gopenid",
    Link = "手Q游戏中心详情页链接",
    Title = "分享的标题",
    Desc = "分享的内容",
    ImagePath = "http://mat1.gtimg.com/www/qq2018/imgs/qq_logo_2018x2.png”,
    ExtraJson = "{\"game_tag\":\"MSG_INVITE\"}"
};
MSDKFriend.SendMessage (reqInfo, "QQ");MSDKFriendReqInfo info;
info.type = kMSDKFriendReqTypeInviteSilent;
info.user = "8952794791840066504";
info.title = "分享的标题";
info.desc = "分享的内容";
info.link = "手Q游戏中心详情页链接";
info.imagePath = "http://mat1.gtimg.com/www/qq2018/imgs/qq_logo_2018x2.png";
info.extraJson = "{\"game_tag\":\"MSG_INVITE\”}”;
MSDKFriend::SendMessage(info, "QQ");(1)手Q后端分享,可通过 C2C 收到分享的结构化消息 / ARK消息。另外,也可以通过“QQ手游”公众号收到分享消息,但需提前关注该公众号。
(2)分享的内容只有手机 QQ 上才可以看到,PC QQ 上看不到。
(3)同一对号码发送接收,互动次数是一天一次。
(4)接收方,同一用户每天最多接收 5 条,每周最多接收 20 条。
(5)发送方,同一用户每天发给不同用户,最多发送 10 条,每周最多发送 40 条。[info] 此接口,暂时不支持静默分享至未注册手Q好友。若想静默分享至未注册手Q好友,需使用服务端分享接口 /v2/friend/ark_share。
3.8 拉起小程序
支持渠道:
- 微信
 - QQ(QQ 从 5.30.000 版本开始支持)
 
// 拉起微信小程序
var reqInfo = new MSDKFriendReqInfo();
reqInfo.Type = (int)FriendReqType.FRIEND_REQ_PULL_UP_MINI_APP;
reqInfo.MediaPath = "pages/indexSelAddr/indexSelAddr";
reqInfo.ExtraJson = {"weapp_id":"gh_e9f675597c15","with_share_ticket":1,"mini_program_type":0};
MSDKFriend.SendMessage (reqInfo, "WeChat");
// 拉起 QQ 小程序
var reqInfo = new MSDKFriendReqInfo();
reqInfo.Type = (int)FriendReqType.FRIEND_REQ_PULL_UP_MINI_APP;
reqInfo.ExtraJson = {\"mini_appid\":\"1109878856\", \"mini_path\":\"pages/component/pages/launchApp813/launchApp813?1=2&2=4\",\"mini_program_type\":3};
MSDKFriend.SendMessage (reqInfo, "QQ");// 拉起微信小程序
MSDKFriendReqInfo info;
info.type = kMSDKFriendReqTypePullUpMiniApp;
info.mediaPath = "pages/indexSelAddr/indexSelAddr";
info.extraJson = {"weapp_id":"gh_e9f675597c15","with_share_ticket":1,"mini_program_type":0};
MSDKFriend::SendMessage(info, "WeChat");
// 拉起 QQ 小程序
MSDKFriendReqInfo info;
info.type = kMSDKFriendReqTypePullUpMiniApp;
info.extraJson = {\"mini_appid\":\"1109878856\", \"mini_path\":\"pages/component/pages/launchApp813/launchApp813?1=2&2=4\",\"mini_program_type\":3};
MSDKFriend::SendMessage(info, "QQ");[info] 拉起小程序功能,没有回调;
mediaPath(微信):选填,小程序 path,可通过该字段指定跳转小程序的某个页面(若填空字符串,默认跳转首页)。对于小游戏,没有页面,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"; extraJson:扩展字段,小程序特别入参放在 extraJson 中,详见 小程序特别入参;
3.9 发送 ark 消息
支持渠道:
var reqInfo = new MSDKFriendReqInfo();
reqInfo.Type = (int)FriendReqType.Friend_REQ_ARK;
reqInfo.Title = "it's title";
reqInfo.Desc = "it's desc";
reqInfo.Link = "http://gamecenter.qq.com/gcjump?appid=100703379&pf=invite&from=iphoneqq&plat=qq&originuin=111&ADTAG=gameobj.msg_invite";
reqInfo.ImagePath = "http://q.qlogo.cn/qqapp/100703379/C1BF66286792F24E166C9A5D27CFB519/100";
reqInfo.ExtraJson = "{\"app\":\"com.tencent.gamecenter.gameshare\",\"view\":\"noDataView\",\"desc\":\"模板描述\",\"prompt\":\"消息提示语\",\"ver\":\"0.0.0.1\",\"config\":{\"type\":\"normal\"},\"meta\":{\"shareData\":{\"appid\":\"1106977030\",\"type\":\"image\",\"url\":\"http%3a%2f%2fimgcache.qq.com%2fclub%2fmars%2fimg_upload%2fgc843_wzgame.png\",\"width\":601,\"height\":330,\"buttons\":[{\"text\":\"TA的战绩\",\"url\":\"http%3a%2f%2fcdn.vip.qq.com\"}]}}}";
MSDKFriend.SendMessage(reqInfo, "QQ");MSDKFriendReqInfo info;
info.type = kMSDKFriendReqTypeArk;
info.title = "it's title";
info.desc = "it's desc";
info.link = "http://gamecenter.qq.com/gcjump?appid=100703379&pf=invite&from=iphoneqq&plat=qq&originuin=111&ADTAG=gameobj.msg_invite";
info.imagePath = "http://q.qlogo.cn/qqapp/100703379/C1BF66286792F24E166C9A5D27CFB519/100";
info.extraJson = "{\"app\":\"com.tencent.gamecenter.gameshare\",\"view\":\"noDataView\",\"desc\":\"模板描述\",\"prompt\":\"消息提示语\",\"ver\":\"0.0.0.1\",\"config\":{\"type\":\"normal\"},\"meta\":{\"shareData\":{\"appid\":\"1106977030\",\"type\":\"image\",\"url\":\"http%3a%2f%2fimgcache.qq.com%2fclub%2fmars%2fimg_upload%2fgc843_wzgame.png\",\"width\":601,\"height\":330,\"buttons\":[{\"text\":\"TA的战绩\",\"url\":\"http%3a%2f%2fcdn.vip.qq.com\"}]}}}";
MSDKFriend::SendMessage(info, "QQ");[info]
业务侧与手Q 进行 ARK 开发时,需要与手Q ARK 开发(ARK_Helper)约定如何填写 extraJson 字段值,MSDK 仅透传。
为了能够正常使用发送 ark 消息功能,作为开发者您需要知晓如下信息:
(1)在 QQ 客户端 8.0.0 之前版本,当 ARK 分享失败时,会自动转化为结构化消息进行分享。传入参数:title、desc、url、imgUrl 即为结构化消息的参数。当 ARK 分享成功时,title、desc、url、imgUrl 没有作用;
(2)从 QQ 客户端 8.0.0 版本开始,ARK 参数必须填写正确,未填入不会成功分享 ARK 形态的消息,如错误则分享失败;
(3)您需要在 ARK 官方管理端 注册您的产品并制作提交您的 ARK 卡片素材,素材过审后的产品,才会开放相应权限。访问该地址需内网,可由腾讯对应运营接口人协助处理,涉及到的卡片模版审核上架等具体可咨询 ARK_Helper;
(4)iOS 的非 ARK 在 TIM 上的分享,需要在 scheme 中加入“tim”。路径在 iOS 的 Info.plist 中,Information Property List -> LSApplicationQueriesSchemes 中添加“tim”。ARK 客户端分享需要与手Q游戏中心沟通接入,详细流程可参照 流程说明文档 该地址需内网访问,可由游戏对应运营接口人查看并联系游戏中心配置。
(5)ARK 消息支持接入方透传自定义数据,gamedata 数据传递协议可参考 ARK 接入文档 或联系 ARK 接口人。如果点击 ARK 消息拉起游戏后,gamedata 数据没有透传给游戏客户端,请联系 ARK 接口人排查平台的跳转链接配置是否正确。
3.10 拉起微信业务功能,分享到微信游戏(好玩)
[info] 一个微信提供的通用功能,不单单会拉起小程序,可能会拉起一个链接等,后面会推荐业务使用该方式拉起微信功能。
| 字段名称 | 含义 | 
|---|---|
| business_type | 【必填】要打开的业务类型 | 
| query | 【选填】查询字符串,格式:key1=val1&key2=val2 (一般为微信内部使用,需要使用时会告知) | 
| ext_info | 【必填】自定义 ext_info 信息,json 格式。gameinfo 有要求必填字段,参见下面 gameinfo 说明 | 
| ext_data | 【仅支持 iOS】【选填】当 ext_info 中视频为本地地址时,需要传入对应的二进制数据路径 | 
其中,ext_info 中的字段包含
| 字段 | 说明 | 
|---|---|
| videoUrl | 视频链接,neededit 为 0 时,填写 QT 视频链接,QT 视频获取需要借助组件。neededit 为 1 时,填写可下载的视频链接,不要求是否为 QT 视频链接 | 
| thumbUrl | 图片 URL | 
| videoPath | Android 本地视频的地址,与 videoURL 选一个 | 
| needEdit | 网络视频时,1:进入图片、视频编辑页面,0:已加载视频进入分享页面。本地视频时,均会进入视频编辑页面 | 
| gameInfo | json 格式,微信要求的相关字段。 【必填】其中 appid 和 appName 为必填字段,appid 传微信 appid;appName 游戏名,不做限制可填任意值。格式参考:{"appid":"YOUR_WECAHT_APPID","appName":"MSDKV5demo"}  | 
var reqInfo = new MSDKFriendReqInfo();
reqInfo.Type = (int)FriendReqType.Friend_REQ_OPEN_BUSINESS_VIEW;
// 网络视频
reqInfo.ExtraJson =  "{\"business_type\":\"nativeShareToGameHaoWan\",\"ext_info\":{\"videoUrl\":\"https://qt.qq.com/php_cgi/cod_video/php/get_video_url.php?vid=2a495e10fc03426fb8e4def77fc68a57&game_id=1007039\",\"thumbUrl\":\"http://shp.qpic.cn/record_smoba/0/53209e869e71dc351129059fbb5f748dT1552892652598430/\" ,\"needEdit\":1,\"gameInfo\":{\"battleId\":\"game12345\",\"appid\":\"YOUR_WECAHT_APPID\",\"appName\":\"MSDKV5demo\"}},\"query\":\"key1=val1&key2=val2\"}";
// 本地视频 iOS
// reqInfo.ExtraJson = "{\"business_type\":\"nativeShareToGameHaoWan\",\"ext_info\":{\"thumbUrl\":\"http://shp.qpic.cn/record_smoba/0/53209e869e71dc351129059fbb5f748dT1552892652598430/\",\"needEdit\":0,\"gameInfo\":{\"battleId\":\"game12345\",\"appid\":\"YOUR_WECAHT_APPID\",\"appName\":\"MSDKV5demo\"}}," "\"query\":\"key1=val1&key2=val2\"";
// reqInfo.ExtraJson +=  ",\"ext_data\": \"";
// reqInfo.ExtraJson += videoFilePath;
// reqInfo.ExtraJson += "\"}";
// 本地视频 Android
// reqInfo.ExtraJson = "{\"business_type\":\"nativeShareToGameHaoWan\",\"ext_info\":{\"videoPath\":\"/storage/emulated/0/DCIM/Camera/test.vedio.mp4\",\"needEdit\":1,\"gameInfo\":{\"battleId\":\"game12345\",\"appid\":\"YOUR_WECAHT_APPID\",\"appName\":\"MSDKV5demo\"}},\"query\":\"key1=val1&key2=val2\"}";
MSDKFriend.SendMessage (reqInfo, "WeChat");MSDKFriendReqInfo info;
info.type = kMSDKFriendReqTypeOpenBusinessView;
// 网络视频
info.extraJson =  "{\"business_type\":\"nativeShareToGameHaoWan\",\"ext_info\":{\"videoUrl\":\"https://qt.qq.com/php_cgi/cod_video/php/get_video_url.php?vid=2a495e10fc03426fb8e4def77fc68a57&game_id=1007039\",\"thumbUrl\":\"http://shp.qpic.cn/record_smoba/0/53209e869e71dc351129059fbb5f748dT1552892652598430/\" ,\"needEdit\":1,\"gameInfo\":{\"battleId\":\"game12345\",\"appid\":\"YOUR_WECAHT_APPID\",\"appName\":\"MSDKV5demo\"}},\"query\":\"key1=val1&key2=val2\"}";
// 本地视频 iOS
// info.extraJson = "{\"business_type\":\"nativeShareToGameHaoWan\",\"ext_info\":{\"thumbUrl\":\"http://shp.qpic.cn/record_smoba/0/53209e869e71dc351129059fbb5f748dT1552892652598430/\",\"needEdit\":0,\"gameInfo\":{\"battleId\":\"game12345\",\"appid\":\"YOUR_WECAHT_APPID\",\"appName\":\"MSDKV5demo\"}}," "\"query\":\"key1=val1&key2=val2\"";
// info.extraJson +=  ",\"ext_data\": \"";
// info.extraJson += videoFilePath;
// info.extraJson += "\"}";
// 本地视频 Android
// info.extraJson = "{\"business_type\":\"nativeShareToGameHaoWan\",\"ext_info\":{\"videoPath\":\"/storage/emulated/0/DCIM/Camera/test.vedio.mp4\",\"needEdit\":1,\"gameInfo\":{\"battleId\":\"game12345\",\"appid\":\"YOUR_WECAHT_APPID\",\"appName\":\"MSDKV5demo\"}},\"query\":\"key1=val1&key2=val2\"}";
MSDKFriend::SendMessage(info, "WeChat");[info] 微信拉起业务功能,可能没有回调;接口调用的时候,extraJson 字段需要指定 business_type 字段(要打开的业务类型)。
3.11 发送至状态,支持微信
var reqInfo = new MSDKFriendReqInfo();
reqInfo.Type = (int)FriendReqType.FRIEND_REQ_STATE_IMAGE;
reqInfo.Title = "游戏视频";
reqInfo.ImagePath = GetFileFromDisk("launch_640x960.png"); //需使用本地图片路径
reqInfo.Link = "https://game.weixin.qq.com/cgi-bin/h5/static/circlecenter/mixed_circle.html?tabid=7&appid=wx95a3a4d7c627e07d&ssid=46#wechat_redirect";
reqInfo.ExtraJson = "{\"stateId\":\"1019\"}";
MSDKFriend.SendMessage (reqInfo, "WeChat");MSDKFriendReqInfo info;
info.type = kMSDKFriendReqTypeWXStatePhoto;
info.title = "MSDK WeChat State Test Title";
info.link = "https://game.weixin.qq.com/cgi-bin/h5/static/circlecenter/mixed_circle.html?tabid=7&appid=wx95a3a4d7c627e07d&ssid=46#wechat_redirect";
info.imagePath = GetFileFromDisk("launch_640x960.png"); //需使用本地图片路径
info.extraJson = "{\"stateId\":\"1019\"}";
MSDKFriend::SendMessage(info, "WeChat");[info] 分享状态到微信,成功之后,状态相关信息将显示在微信->我的个人头像下面,点击状态下面应用名称将自动跳转到指定页面。当前版本 MSDK 支持分享图片状态到微信。如需接入,需联系 MSDK助手 对接;stateId 可以填写 1019,link 为游戏圈地址,title 设置后将作为编辑页默认值,跳转到微信之后,title 和 stateId 参数均能够自主修改;图片建议 9:16 的尺寸,需使用本地图片路径。
3.12 微信视频号直播
MSDK 封装视频号直播接口,通过复用 MSDKFriend.SendMessage 接口,入参为 MSDKFriendReqInfo info 及 string channel。
请使用 SendMessage 接口,info 中 Type 、ExtraJson 为必填字段,其余字段无需填写;channel 应固定填写为 "WeChat"。 info.Type 参数设置为 FriendReqType.Friend_REQ_WX_CHANNEL_START_LIVE,info.ExtraJson 由业务自主传入,包括 liveJsonInfo 和 openID 字段(注意大小写),具体请参照接口文档:https://doc.weixin.qq.com/doc/w3_AJIAmAbDAK4LXcbbMdHT6OnjGLNvf?scode=AJEAIQdfAAoCcEODzyAJIAmAbDAK4。 调用示例:
var reqInfo = new MSDKFriendReqInfo
{
    Type = FriendReqType.Friend_REQ_WX_CHANNEL_START_LIVE,
    ExtraJson = "{\"liveJsonInfo\":\"{\\\"extraAntiInfo\\\":\\\"bQ9Xn5XOTvUmrcjt3%2FOWSs4CXtiWfDMtoQlMb1UNrScXEkkzIVE74jlDsOUloSOx\\\",\\\"routeScene\\\":3,\\\"liveEntryScene\\\":1,\\\"appid\\\":\\\"xxxxx\\\"}\",\"openID\":\"oHlap1YDU3v_xdsM-OfFUICKa_VU\"}";
};
MSDKFriend.SendMessage (reqInfo, "WeChat");MSDKFriendReqInfo info;
info.type = kMSDKFriendReqTypeWXChannelStartLive;
info.extraJson = "{\"liveJsonInfo\":\"{\\\"extraAntiInfo\\\":\\\"bQ9Xn5XOTvUmrcjt3%2FOWSs4CXtiWfDMtoQlMb1UNrScXEkkzIVE74jlDsOUloSOx\\\",\\\"routeScene\\\":3,\\\"liveEntryScene\\\":1,\\\"appid\\\":\\\"xxxxx\\\"}\",\"openID\":\"oHlap1YDU3v_xdsM-OfFUICKa_VU\"}";
MSDKFriend::SendMessage(info, "WeChat");注意事项
- 成功跳转到微信,并拉起视频号直播页,成功时 MSDK 无回调。
 - 只有当微信 opensdk 异常时会通过 OnFriendRetEvent(C#)或 OnDeliverMessageNotify(C++)返回结果,可参照 2.1 注册回调。
 
3.13 QQ 小世界
MSDK 封装手Q小世界分享接口,复用 MSDKFriend.SendMessage 接口,入参为 MSDKFriendReqInfo info 及 string channel。
请使用 SendMessage 接口,info 中 Type 、ExtraJson 为必填字段,其余字段无需填写;channel 应固定填写为 "QQ"。 info.Type 参数设置为 FriendReqType.FRIEND_REQ_COMMON_SHARE,info.ExtraJson 由业务自主传入,包括 serviceID 和 extraJson 字段(注意大小写)。调用示例:
string serviceID = "3004"; // 服务 id,每个对接的手Q业务都需要找手Q互联分配服务 id,安卓和 iOS 同一个 serviceID
string extraJson = "{\\\"local_video_path\\\":\\\"\\\\\\/storage\\\\\\/emulated\\\\\\/0\\/Android\\\\\\/data\\\\\\/com.example.wegame\\\\\\/files\\\\\\/video.mp4\\\"}"; // 可扩展参数,该数据会透传到手Q,传入内容与手Q侧约定
var reqInfo = new MSDKFriendReqInfo
{
    Type = FriendReqType.FRIEND_REQ_COMMON_SHARE,
    ExtraJson = "{\"serviceID\":\"" + serviceID + "\"," + "\"extraJson\":\"" + extraJson + "\"}";
};
MSDKFriend.SendMessage (reqInfo, "QQ");MSDKFriendReqInfo info;
info.type = kMSDKFriendReqTypeWithCommonShare;
info.extraJson = "{\"serviceID\":\"3004\",\"extraJson\":\"{\\\"local_video_path\\\":\\\"\\\\\\/storage\\\\\\/emulated\\\\\\/0\\/Android\\\\\\/data\\\\\\/com.example.wegame\\\\\\/files\\\\\\/video.mp4\\\"}\"}";
MSDKFriend::SendMessage(info, "QQ");注意事项
- 分配服务 id 联系 MSDK助手 对接
 
3.14 微信原生分享
MSDK 封装微信原生分享类型,复用 MSDKFriend.SendMessage 接口分享到微信好友,入参为 MSDKFriendReqInfo info 及 string channel。
请使用 SendMessage 接口,channel 应固定填写为 "WeChat";MSDKFriendReqInfo info 参数说明如下:
| 参数名 | 类型 | 参数说明 | 
|---|---|---|
| Type | int | 分享指定的消息类型,必填。设置为 Friend_REQ_WX_NATIVE_GAME_PAGE | 
| Title | string | 分享的标题,必填 | 
| Desc | string | 分享的描述,选填 | 
| User | string | 好友的 gopenid,选填。5.33.000 及以上版本支持 | 
| ThumbPath | string | 分享的封面图路径,支持本地和网络 URL,必填 | 
| ExtraJson | string | 扩展字段,必填。透传 isVideo、videoDuration、shareData 等参数,参数名需要严格大小写 | 
具体介绍请参照微信原生分享接口文档:https://iwiki.woa.com/p/4008426990 。
调用示例:
var reqInfo = new MSDKFriendReqInfo();
reqInfo.Type = (int)FriendReqType.Friend_REQ_WX_NATIVE_GAME_PAGE;
reqInfo.Title = "微信原生页分享";  // 标题
reqInfo.Desc = "微信分享体验优化"; // 概要信息
info.user = "好友的 gopenid";// 微信定向分享时,User 为必填参数
reqInfo.ThumbPath = GetFileFromDisk ("test4.jpg");  // 填写对应的封面图路径
reqInfo.ExtraJson = "{\"message_action\":\"\",\"game_data\":\"Game Data 测试数据\",\"media_tag_name\":\"MSG_INVITE\",\"isVideo\":0,\"videoDuration\":0,\"shareData\":\"{\\\"appid\\\":\\\"wx95a3a4d7c627e07d\\\",\\\"floating_layer\\\":{\\\"floating_layer_id\\\":23},\\\"game_launch\\\":{\\\"message_ext\\\":\\\"xxxx\\\"},\\\"share_image_tpl\\\":{\\\"share_img_list\\\":[{\\\"img_url\\\":\\\"http://p.qpic.cn/wxapp/98Nz5LFElxwa1SvRtFFOIV046OU5pA2PWicuC3rDosgy6D1wb9oAGRAYnYfVh6gNOyKzzEc1LiboQ/c456\\\",\\\"width\\\":300,\\\"height\\\":300}],\\\"user_card\\\":{\\\"content\\\":\\\"这是什么鸟哦?好可爱好萌啊,看一眼就爱上啦。公园是个神奇的地方。最多展示两行文字,当字数超长时自动将其省略...\\\"}}}\"}"; // 透传参数
MSDKFriend.SendMessage (reqInfo, "WeChat");MSDKFriendReqInfo info;
info.type = kMSDKFriendReqTypeWXNativeGamePage;
info.title = "微信原生分享"; // 标题
info.desc = "微信分享体验优化"; // 概要信息
info.thumbPath = GetFileFromDisk ("test4.jpg");  // 填写对应的封面图路径
info.extraJson = "{\"message_action\":\"\",\"game_data\":\"Game Data 测试数据\",\"media_tag_name\":\"MSG_INVITE\",\"isVideo\":0,\"videoDuration\":0,\"shareData\":\"{\\\"appid\\\":\\\"wx95a3a4d7c627e07d\\\",\\\"floating_layer\\\":{\\\"floating_layer_id\\\":23},\\\"game_launch\\\":{\\\"message_ext\\\":\\\"xxxx\\\"},\\\"share_image_tpl\\\":{\\\"share_img_list\\\":[{\\\"img_url\\\":\\\"http://p.qpic.cn/wxapp/98Nz5LFElxwa1SvRtFFOIV046OU5pA2PWicuC3rDosgy6D1wb9oAGRAYnYfVh6gNOyKzzEc1LiboQ/c456\\\",\\\"width\\\":300,\\\"height\\\":300}],\\\"user_card\\\":{\\\"content\\\":\\\"这是什么鸟哦?好可爱好萌啊,看一眼就爱上啦。公园是个神奇的地方。最多展示两行文字,当字数超长时自动将其省略...\\\"}}}\"}";  // 透传参数
MSDKFriend::SendMessage(info, "WeChat");[warning] 注意事项
目前微信 APP iOS 端 8.0.34 、 Android 端 8.0.33 及以上版本才支持原生分享。
3.15 微信状态-跳转到小程序
分享图片到微信状态,成功之后,状态相关信息将显示在微信->我的个人头像下面,点击状态下面的小程序名称将自动跳转到指定小程序页面。
| 参数名 | 类型 | 参数说明 | 
|---|---|---|
| Type | int | 分享指定的消息类型,必填 | 
| Title | string | 分享的标题,选填 | 
| ImagePath | string | 图片路径,必填 图片建议 9:16 的尺寸,需使用本地图片路径  | 
| ExtraJson | string | 扩展字段,必填 | 
其中,ExtraJson 中的字段包含
| 参数 | 类型 | 参数说明 | 
|---|---|---|
| stateId | string | 【必填】状态ID,可填1019,跳转到微信之后,可被用户自主修改 | 
| weapp_id | string | 【必填】小程序 id | 
| mini_program_type | int | 【选填】指定小程序版本,分为 Release(0),Test(1),Preview(2)三种版本类型,与小程序版本对应,不填则默认为Release版 | 
| media_path | string | 【选填】指定跳转后的小程序页面路径,不填默认为小程序首页 | 
调用示例:
var reqInfo = new MSDKFriendReqInfo();
reqInfo.Type = FriendType.FRIEND_REQ_STATE_IMAGE_OPEN_MINI_APP;
reqInfo.Title = "send to wx state";// 标题
reqInfo.ImagePath = GetFileFromDisk("launch_640x960.png"); //需使用本地图片路径
reqInfo.ExtraJson = "{\"stateId\":\"1019\",\"weapp_id\":\"gh_e9f675597c15\",\"mini_program_type\":0,\"media_path\":\"pages/msdkTest/msdkTest?k1=v1&k2=v2&msdk=test\"}";
MSDKFriend.SendMessage(reqInfo, "WeChat");MSDKFriendReqInfo info;
info.type = kMSDKFriendReqTypeWXStatePhotoOpenMiniApp;
info.title = "send to wx state";// 标题
info.imagePath = GetFileFromDisk("launch_640x960.png"); //需使用本地图片路径
info.extraJson= "{\"stateId\":\"1019\",\"weapp_id\":\"gh_e9f675597c15\",\"mini_program_type\":0,\"media_path\":\"pages/msdkTest/msdkTest?k1=v1&k2=v2&msdk=test\"}";
MSDKFriend::SendMessage(info, "WeChat");四、分享信息
1)功能描述
发送消息到信息墙,比如微信朋友圈、QQ空间、Facebook,信息基本是所有的好友可见,已经登录的情况下,渠道入参可以不填写
2)接口声明
public static void Share(MSDKFriendReqInfo info, string channel = "")public static void Share(const MSDKFriendReqInfo &reqInfo, const string &channel = "");3)入参说明
| 参数名称 | 参数类型 | 说明 | 
|---|---|---|
| info | MSDKFriendReqInfo | 好友模块请求结构体,主要包含请求对象,请求信息等重要入参 | 
| channel | string | 渠道信息,比如“WeChat”、“QQ”、“Facebook” | 
4.1 分享文本
支持渠道:
- 朋友圈
 - QQ 空间
 - Twitter(仅 Android 平台)
 - System
 
var reqInfo = new MSDKFriendReqInfo
{
	Type = FriendReqType.Friend_REQ_TEXT,
	Desc = "MSDK,是互娱增值服务部为游戏提供公共组件和服务库的平台"
};
MSDKFriend.Share (reqInfo, "QQ");MSDKFriendReqInfo info;
info.type = kMSDKFriendReqTypeText;
info.desc = "MSDK,是互娱增值服务部为游戏提供公共组件和服务库的平台";
MSDKFriend::Share(info, "WeChat");4.2 分享链接
支持渠道:
- 朋友圈
 - QQ 空间
 - Twitter(仅 Android 平台)
 - System(iOS 平台)
 
var reqInfo = new MSDKFriendReqInfo
{
	Type = FriendReqType.Friend_REQ_LINK,
	Link = "https://www.qq.com"
};
MSDKFriend.Share (reqInfo, "Facebook");MSDKFriendReqInfo info;
info.type = kMSDKFriendReqTypeLink;
info.link = "https://www.qq.com";
MSDKFriend::Share(info, "WeChat");[info] QQ 渠道 Title 为必填字段。
4.3 分享图片
支持渠道:
- 朋友圈
 - QQ 空间
 - Twitter(仅 Android 平台)
 - System
 
var reqInfo = new MSDKFriendReqInfo
{
	Type = FriendReqType.Friend_REQ_IMG,
	ImagePath = "http://mat1.gtimg.com/www/qq2018/imgs/qq_logo_2018x2.png";
};
MSDKFriend.Share (reqInfo, "Facebook");MSDKFriendReqInfo info;
info.type = kMSDKFriendReqTypeIMG;
info.imagePath = "http://mat1.gtimg.com/www/qq2018/imgs/qq_logo_2018x2.png";
MSDKFriend::Share(info, "WeChat");4.4 分享音乐
支持渠道:
- 朋友圈
 
var reqInfo = new MSDKFriendReqInfo
{
	Type = FriendReqType.Friend_REQ_MUSIC,
	Link = "http://i.y.qq.com/rsc/fcgi-bin/fcg_pyq_play.fcg?songid=&songmid=003vUjJp3QwFcd&songtype=1&fromtag=46&uin=496387275&code=C9E8C",
	ImagePath = "http://mat1.gtimg.com/www/qq2018/imgs/qq_logo_2018x2.png"
};
MSDKFriend.Share (reqInfo, "WeChat");MSDKFriendReqInfo info;
info.type = kMSDKFriendReqTypeMusic;
info.link = "http://y.qq.com/#type=song&mid=000cz9pr0xlAId";
info.imagePath = "http://mat1.gtimg.com/www/qq2018/imgs/qq_logo_2018x2.png";
MSDKFriend::Share(info, "WeChat");4.5 分享邀请
支持渠道:
- QQ 空间,空间新能力,MSDKPIX5.39.100 iOS 新增 isOnline 参数取消 QQ 缩略图 1M 限制,详细说明参见 空间新能力说明及示例
 
var reqInfo = new MSDKFriendReqInfo
{
	Type = FriendReqType.Friend_REQ_INVITE,
	Link = "http://m.gamecenter.qq.com/directout/detail/1106977030?_wv=2147484679&_wwv=4&ADTAG=gamecenter&autodownload=1&pf=invite&appid=1106977030&asyncMode=3&appType=1&_nav_bgclr=ffffff&_nav_titleclr=ffffff&_nav_txtclr=ffffff&_nav_anim=true&_nav_alpha=0";
};
MSDKFriend.Share (reqInfo, "QQ");MSDKFriendReqInfo info;
info.type = kMSDKFriendReqTypeInvite;
info.link = "http://m.gamecenter.qq.com/directout/detail/1106977030?_wv=2147484679&_wwv=4&ADTAG=gamecenter&autodownload=1&pf=invite&appid=1106977030&asyncMode=3&appType=1&_nav_bgclr=ffffff&_nav_titleclr=ffffff&_nav_txtclr=ffffff&_nav_anim=true&_nav_alpha=0";
MSDKFriend::Share(info, "QQ");4.6 分享视频
支持渠道:
- QQ 空间
 
var reqInfo = new MSDKFriendReqInfo
{
    Type = FriendReqType.Friend_REQ_VIDEO,
    MediaPath = "address of local video"
};
MSDKFriend.Share (reqInfo, "QQ");MSDKFriendReqInfo info;
info.type = kMSDKFriendReqTypeVideo;
info.mediaPath = "assets-library://asset/asset.MOV?id=076D059F-C610-4DA5-8593-52EABD26F944&ext=MOV";
MSDKFriend::Share(info, "Facebook");[info]
(1)视频仅支持本地视频,Facebook iOS 的视频分享,建议使用 asset url 进行分享;
(2)QQ视频分享的注意项,请参见 QQ的功能说明;
4.7 分享微信游戏圈,仅支持图片(包括本地图片和网络图片)
var reqInfo = new MSDKFriendReqInfo
{
	Type = FriendReqType.Friend_REQ_WX_GAMELINE,
	ImagePath = "http://mat1.gtimg.com/www/qq2018/imgs/qq_logo_2018x2.png";
	ExtraJson = "{\"gameextra\":\"shareWXGameLinePic\"}";
};
MSDKFriend.Share (reqInfo, "WeChat");MSDKFriendReqInfo info;
info.type = kMSDKFriendReqTypeWXGameLine;
info.imagePath = "http://mat1.gtimg.com/www/qq2018/imgs/qq_logo_2018x2.png";
info.extraJson = "{\"gameextra\":\"shareWXGameLinePic\"}";
MSDKFriend::Share(info, "WeChat");[info]
(1)图片数据的大小不能超过512K,超过大小的图片业务需要自己压缩处理;
(2)extraJson 中 gameextra 字段:游戏自定义参数,附加到分享页面的url后面。建议业务做Base64编码处理后传递,MSDK此参数只是透传,不做任何处理,同时需要确保此参数长度符合url长度要求;
4.8 分享小程序到 QQ 空间
var reqInfo = new MSDKFriendReqInfo
{
	Type = FriendReqType.Friend_REQ_MINI_APP,
	Title = "QQ小程序分享",
	Desc = "QQ小程序Desc",
	// Android 
	ThumbPath = "http://mat1.gtimg.com/www/qq2018/imgs/qq_logo_2018x2.png",
	// iOS
	//ImagePath = "http://mat1.gtimg.com/www/qq2018/imgs/qq_logo_2018x2.png",
	Link = "http://www.qq.com";
	ExtraJson = "{\"mini_appid\":\"1109878856\",\"mini_path\":\"pages/index/index\",\"mini_webpage_url\":\"www.qq.com\",\"mini_program_type\":3}}"
};
MSDKFriend.Share (reqInfo, "QQ");MSDKFriendReqInfo info;
info.type = kMSDKFriendReqTypeMiniApp;
info.title = "QQ小程序分享";
info.desc = "QQ小程序Desc";
info.thumbPath = "http://mat1.gtimg.com/www/qq2018/imgs/qq_logo_2018x2.png";
info.link = "http://www.qq.com";
info.extraJson = "{\"mini_appid\":\"1109878856\",\"mini_path\":\"pages/index/index\",\"mini_webpage_url\":\"www.qq.com\",\"mini_program_type\":3}}";
MSDKFriend::Share(info, "QQ");[info]
(1)Title,选填,分享标题;
(2)Desc,必填,分享摘要描述,不填部分机型报参数错误;
(3)ThumbPath,选填,分享的小程序 icon 图;
(4)Link,必填,兼容低版本的网页链接(可填任意 URL);
(5)ExtraJson,必填,小程序参数特别入参,该字段中 mini_appid 为必填,其中 key 值是固定的,value 值需根据业务进行拼装,详见 小程序特别入参-QQ 小程序特别入参;
(6)透传自定义参数说明:通过 ExtraJson 中 mini_path 透传;
4.9 分享至视频号,支持微信视频号
自 2024 年起微信正式下架并停止维护该功能。因此后续新产品将不再支持此功能的接入,同时微信侧建议已接入的历史产品对该能力进行下线处理。
var reqInfo = new MSDKFriendReqInfo
{
    Type = FriendReqType.Friend_REQ_WX_CHANNEL_SHARE_VIDEO;
    //Android MediaPath传视频本地路径
    MediaPath = GetFileFromDisk ("test_video.mp4");
    //iOS MediaPath传视频的相册Local Identify
    MediaPath = GetVideoLocalIdentify();
};
MSDKFriend.Share (reqInfo, "WeChat");MSDKFriendReqInfo info;
info.type = kMSDKFriendReqTypeWXChannelShareVideo;
//Android MediaPath传视频本地路径
info.mediaPath = getImagePathByDefaultSetting("test_video.mp4");
//iOS MediaPath传视频的相册Local Identify
info.MediaPath = GetVideoLocalIdentify();
MSDKFriend::Share(info, "WeChat");[info] mediaPath 字段 iOS 端填视频资源 PHAsset localIdentifier,Android 端填视频资源本地路径,视频规格要求尺寸在 1:3-3:1,size 不能超过 450M,时长不超过 30 分钟。
4.10 分享至状态,支持微信
var reqInfo = new MSDKFriendReqInfo
{
    Type = FriendReqType.FRIEND_REQ_STATE_IMAGE;
    Title = "游戏视频";
    ImagePath = GetFileFromDisk("launch_640x960.png"); //需使用本地图片路径
    Link = "https://game.weixin.qq.com/cgi-bin/h5/static/circlecenter/mixed_circle.html?tabid=7&appid=wx95a3a4d7c627e07d&ssid=46#wechat_redirect";
    ExtraJson = "{\"stateId\":\"1019\"}";
};
MSDKFriend.Share (reqInfo, "WeChat");MSDKFriendReqInfo info;
info.type = kMSDKFriendReqTypeWXStatePhoto;
info.title = "MSDK WeChat State Test Title";
info.link = "https://game.weixin.qq.com/cgi-bin/h5/static/circlecenter/mixed_circle.html?tabid=7&appid=wx95a3a4d7c627e07d&ssid=46#wechat_redirect";
info.imagePath = GetFileFromDisk("launch_640x960.png"); //需使用本地图片路径
info.extraJson = "{\"stateId\":\"1019\"}";
MSDKFriend::Share(info, "WeChat");[info] 分享状态到微信,成功之后,状态相关信息将显示在微信->我的个人头像下面,点击状态下面应用名称将自动跳转到指定页面。当前版本 MSDK 支持分享图片状态到微信。如需接入,需联系 MSDK助手 对接;stateId 可以填写 1019,link 为游戏圈地址,title 设置后将作为编辑页默认值,跳转到微信之后,title 和 stateId 参数均能够自主修改;图片建议 9:16 的尺寸,需使用本地图片路径。
4.11 Android Instagram 渠道分享
支持分享文本或图片。由于 iOS Instagram 的分享过程类似于系统分享,无法单独选择 Instagram,iOS 暂未集成,建议直接使用系统分享。
// 分享文本消息
public static final String mCurChannel = "Instagram";//定义 Channel 为 Instagram
MSDKFriendReqInfo reqInfo = new MSDKFriendReqInfo();
reqInfo.desc = "MSDK 文本分享测试";
reqInfo.type = MSDKFriendReqInfo.FRIEND_REQ_TEXT;
MSDKPlatform.Friend.share(reqInfo, mCurChannel);
基于系统分享的基础,支持本地或网络图片,内部通过 FileProvider 进行分享。对于网络图片,MSDK 需先下载到本地,然后再分享出去。
// 分享图片消息
public static final String mCurChannel = "Instagram";//定义 Channel 为 Instagram
MSDKFriendReqInfo reqInfo = new MSDKFriendReqInfo();
reqInfo.type = MSDKFriendReqInfo.Friend_REQ_IMG;
reqInfo.title = "it's title";
reqInfo.link = "http://gamecenter.qq.com/gcjump?appid=100703379&pf=invite&from=iphoneqq&plat=qq&originuin=111&ADTAG=gameobj.msg_invite";
reqInfo.imagePath = "http://q.qlogo.cn/qqapp/100703379/C1BF66286792F24E166C9A5D27CFB519/100";
MSDKPlatform.Friend.share(reqInfo, mCurChannel);
[info] Instagram 分享关于 Android Target 30 包可见性问题
Android Instagram 分享实际上是通过系统分享完成。如果手机上没有安装 Instagram,系统分享弹窗将弹出一个空的应用列表,实际分享失败,所以需提前检查是否已经安装 Instagram。
为了适应更全面的场景,MSDK 的 Instagram 分享默认不进行安装包的检查。如果业务需要,请在 Target 30 的安装包添加 query,详情如下所示。与此同时,也需在 MSDKConfig.ini 中添加配置项 ENABLE_PACKAGE_CHECK,值为 1。
<queries>
    ...
    <package android:name="com.instagram.android" />
</queries>
4.12 微信原生分享
MSDK 封装微信原生分享类型,复用 MSDKFriend.Share 接口分享到微信朋友圈,入参为 MSDKFriendReqInfo info 及 string channel。
请使用 Share 接口,channel 应固定填写为 "WeChat";info.Type 参数设置为 FriendReqType.Friend_REQ_WX_NATIVE_GAME_PAGE,info.ExtraJson 由业务自主传入,透传 isVideo、videoDuration、shareData 等参数,参数名需要严格大小写。具体介绍请参照微信原生分享接口文档:https://iwiki.woa.com/p/4008426990 。
调用示例:
var reqInfo = new MSDKFriendReqInfo();
reqInfo.Type = (int)FriendReqType.Friend_REQ_WX_NATIVE_GAME_PAGE;
reqInfo.Title = "微信原生页分享";  // 标题
reqInfo.Desc = "微信分享体验优化"; // 概要信息
reqInfo.ThumbPath = GetFileFromDisk ("test4.jpg");  // 填写对应的封面图路径
reqInfo.ExtraJson = "{\"message_action\":\"\",\"game_data\":\"Game Data 测试数据\",\"media_tag_name\":\"MSG_INVITE\",\"isVideo\":0,\"videoDuration\":0,\"shareData\":\"{\\\"appid\\\":\\\"wx95a3a4d7c627e07d\\\",\\\"floating_layer\\\":{\\\"floating_layer_id\\\":23},\\\"game_launch\\\":{\\\"message_ext\\\":\\\"xxxx\\\"},\\\"share_image_tpl\\\":{\\\"share_img_list\\\":[{\\\"img_url\\\":\\\"http://p.qpic.cn/wxapp/98Nz5LFElxwa1SvRtFFOIV046OU5pA2PWicuC3rDosgy6D1wb9oAGRAYnYfVh6gNOyKzzEc1LiboQ/c456\\\",\\\"width\\\":300,\\\"height\\\":300}],\\\"user_card\\\":{\\\"content\\\":\\\"这是什么鸟哦?好可爱好萌啊,看一眼就爱上啦。公园是个神奇的地方。最多展示两行文字,当字数超长时自动将其省略...\\\"}}}\"}"; // 透传参数
MSDKFriend.Share (reqInfo, "WeChat");MSDKFriendReqInfo info;
info.type = kMSDKFriendReqTypeWXNativeGamePage;
info.title = "微信原生分享"; // 标题
info.desc = "微信分享体验优化"; // 概要信息
info.thumbPath = GetFileFromDisk ("test4.jpg");  // 填写对应的封面图路径
info.extraJson = "{\"message_action\":\"\",\"game_data\":\"Game Data 测试数据\",\"media_tag_name\":\"MSG_INVITE\",\"isVideo\":0,\"videoDuration\":0,\"shareData\":\"{\\\"appid\\\":\\\"wx95a3a4d7c627e07d\\\",\\\"floating_layer\\\":{\\\"floating_layer_id\\\":23},\\\"game_launch\\\":{\\\"message_ext\\\":\\\"xxxx\\\"},\\\"share_image_tpl\\\":{\\\"share_img_list\\\":[{\\\"img_url\\\":\\\"http://p.qpic.cn/wxapp/98Nz5LFElxwa1SvRtFFOIV046OU5pA2PWicuC3rDosgy6D1wb9oAGRAYnYfVh6gNOyKzzEc1LiboQ/c456\\\",\\\"width\\\":300,\\\"height\\\":300}],\\\"user_card\\\":{\\\"content\\\":\\\"这是什么鸟哦?好可爱好萌啊,看一眼就爱上啦。公园是个神奇的地方。最多展示两行文字,当字数超长时自动将其省略...\\\"}}}\"}";  // 透传参数
MSDKFriend::Share(info, "WeChat");[warning] 注意事项
目前微信 APP iOS 端 8.0.34 、 Android 端 8.0.33 及以上版本才支持原生分享。
4.13 微信状态-跳转到小程序
分享图片到微信状态,成功之后,状态相关信息将显示在微信->我的个人头像下面,点击状态下面的小程序名称将自动跳转到指定小程序页面。
| 参数名 | 类型 | 参数说明 | 
|---|---|---|
| Type | int | 分享指定的消息类型,必填 | 
| Title | string | 分享的标题,选填 | 
| ImagePath | string | 图片路径,必填 图片建议 9:16 的尺寸,需使用本地图片路径  | 
| ExtraJson | string | 扩展字段,必填 | 
其中,ExtraJson 中的字段包含
| 参数 | 类型 | 参数说明 | 
|---|---|---|
| stateId | string | 【必填】状态ID,可填1019,跳转到微信之后,可被用户自主修改 | 
| weapp_id | string | 【必填】小程序 id | 
| mini_program_type | int | 【选填】指定小程序版本,分为 Release(0),Test(1),Preview(2)三种版本类型,与小程序版本对应,不填则默认为Release版 | 
| media_path | string | 【选填】指定跳转后的小程序页面路径,不填默认为小程序首页 | 
调用示例:
var reqInfo = new MSDKFriendReqInfo();
reqInfo.Type = FriendType.FRIEND_REQ_STATE_IMAGE_OPEN_MINI_APP;
reqInfo.Title = "send to wx state";// 标题
reqInfo.ImagePath = GetFileFromDisk("launch_640x960.png"); //需使用本地图片路径
reqInfo.ExtraJson = "{\"stateId\":\"1019\",\"weapp_id\":\"gh_e9f675597c15\",\"mini_program_type\":0,\"media_path\":\"pages/msdkTest/msdkTest?k1=v1&k2=v2&msdk=test\"}";
MSDKFriend.Share(reqInfo, "WeChat");MSDKFriendReqInfo info;
info.type = kMSDKFriendReqTypeWXStatePhotoOpenMiniApp;
info.title = "send to wx state";// 标题
info.imagePath = GetFileFromDisk("launch_640x960.png"); //需使用本地图片路径
info.extraJson= "{\"stateId\":\"1019\",\"weapp_id\":\"gh_e9f675597c15\",\"mini_program_type\":0,\"media_path\":\"pages/msdkTest/msdkTest?k1=v1&k2=v2&msdk=test\"}";
MSDKFriend::Share(info, "WeChat");五、常见问题
5.1 MSDKFriendReqInfo 详解
| 成员变量名称 | 类型 | 说明 | 
|---|---|---|
| Type | int | 分享消息时必填,加好友时非必填。好友请求类型,后台静默或者是拉起应用 | 
| User | string | 用户,可以是 id 或者 openid,比如微信指定好友分享时,需要填写指定好友的 openid | 
| Title | string | 必填,分享的标题 | 
| Desc | string | 选填,概述,简单描述分享的目的 | 
| ImagePath | string | 选填,图片,可以是本地地址或者 URL,建议本地地址 | 
| ThumbPath | string | 选填,缩略图,一般是游戏的 icon,可以是本地 icon,也可以是 icon URL, 建议使用本地地址;微信分享最大支持 64k | 
| MediaPath | string | 选填,多媒体(视频),只支持本地地址 | 
| Link | string | 选填,发送/分享的图片、音乐、视频或应用邀请的链接等 1、当发送应用邀请时: (1)QQ渠道,必填,填写游戏中心详情页 (2)WeChat 渠道,Android 为无用字段。iOS选填,如果填写为空,点击消息会拉起游戏。如果填写为其他任意地址,则点击消息会跳转至该地址  | 
| ExtraJson | string | 选填,扩展字段。当发送应用邀请时,Android 为必填项,内容可以为空 | 
5.2 MSDKPersonInfo 详解
| 成员变量名称 | 类型 | 说明 | 
|---|---|---|
| openid | string | 用户ID | 
| userName | string | 昵称 | 
| gender | int | 性别,未定义:0,男:1,女:2 微信和手Q渠道固定返回 0  | 
| pictureUrl | string | 头像链接 | 
| country | string | 国家 | 
| province | string | 省份 | 
| city | string | 城市 | 
| language | string | 语言 | 
5.3 好友请求类型详解
public enum FriendReqType
{    
    FRIEND_REQ_TEXT = 10000,                      //文字分享
    FRIEND_REQ_LINK,                              //链接分享
    FRIEND_REQ_IMG,                               //图片分享
    FRIEND_REQ_INVITE,                            //应用邀请
    FRIEND_REQ_MUSIC,                             //音乐分享
    FRIEND_REQ_VIDEO,                             //视频分享
    FRIEND_REQ_MINI_APP,                          //小程序分享
    FRIEND_REQ_PULL_UP_MINI_APP,                  //小程序拉起
    FRIEND_REQ_ARK,                               //ark分享
    FRIEND_REQ_OPEN_BUSINESS_VIEW,                //业务功能拉起
    FRIEND_REQ_WX_GAMELINE,                       //游戏圈分享
    FRIEND_REQ_WX_CHANNEL_SHARE_VIDEO,            //分享至视频号
    FRIEND_REQ_STATE_TEXT,                        //分享文本至WX状态
    FRIEND_REQ_STATE_IMAGE,                       //分享图片至WX状态
    FRIEND_REQ_STATE_VIDEO,                       //分享音乐视频至WX状态
    FRIEND_REQ_WX_CHANNEL_START_LIVE,             //视频号直播
    FRIEND_REQ_COMMON_SHARE,                      //通用分享,目前支持小世界
    FRIEND_REQ_WX_NATIVE_GAME_PAGE,               // 原生分享
    FRIEND_REQ_STATE_IMAGE_OPEN_MINI_APP,         //share photo to wx state,which support open mini app
    FRIEND_REQ_TEXT_SILENT = 20000,               //文字分享(静默)
    FRIEND_REQ_LINK_SILENT,                       //链接分享 (静默)
    FRIEND_REQ_IMG_SILENT,                        //图片分享 (静默)
    FRIEND_REQ_INVITE_SILENT,                     //应用邀请 (静默)
    FRIEND_REQ_MUSIC_SILENT,                      //音乐分享 (静默)
    FRIEND_REQ_VIDEO_SILENT,                      //视频分享 (静默)
    FRIEND_REQ_MINI_APP_SILENT,                   //小程序分享 (静默)
}typedef enum MSDKFriendReqType
{
    kMSDKFriendReqTypeText = 10000,               //文字分享
    kMSDKFriendReqTypeLink,                       //链接分享
    kMSDKFriendReqTypeIMG,                        //图片分享
    kMSDKFriendReqTypeInvite,                     //应用邀请
    kMSDKFriendReqTypeMusic,                      //音乐分享
    kMSDKFriendReqTypeVideo,                      //视频分享
    kMSDKFriendReqTypeMiniApp,                    //小程序分享
    kMSDKFriendReqTypePullUpMiniApp,              //小程序拉起
    kMSDKFriendReqTypeArk,                        //ARK分享
    kMSDKFriendReqTypeOpenBusinessView,           //业务功能拉起
    kMSDKFriendReqTypeWXGameLine,                 //微信游戏圈图片分享
    kMSDKFriendReqTypeWXChannelShareVideo,        //分享至视频号
    kMSDKFriendReqTypeWXStateText,                //分享文本至WX状态
    kMSDKFriendReqTypeWXStatePhoto,               //分享图片至WX状态
    kMSDKFriendReqTypeWXStateMusicVideo,          //分享音乐视频至WX状态
    kMSDKFriendReqTypeWXChannelStartLive,         //视频号直播
    kMSDKFriendReqTypeWithCommonShare,            //通用分享,目前支持小世界
    kMSDKFriendReqTypeWXNativeGamePage,           //原生分享
    kMSDKFriendReqTypeWXStatePhotoOpenMiniApp,    //share photo to wx state,which support open mini app
    kMSDKFriendReqTypeTextSilent = 20000,         //文字分享(静默)
    kMSDKFriendReqTypeLinkSilent,                 //链接分享 (静默)
    kMSDKFriendReqTypeIMGSilent,                  //图片分享 (静默)
    kMSDKFriendReqTypeInviteSilent,               //应用邀请 (静默)
    kMSDKFriendReqTypeMusicSilent,                //音乐分享 (静默)
    kMSDKFriendReqTypeVideoSilent,                //视频分享 (静默)
    kMSDKFriendReqTypeMiniAppSilent,              //小程序分享 (静默)
    
} MSDKFriendReqType;5.4 小程序特别入参
微信小程序特别入参
extraJson = "{\"media_tag_name\":\"MSG_INVITE\",
\"weapp_id\":\"gh_e9f675597c15\",
\"mini_program_type\":0}";
| 参数名称 | 说明 | 
|---|---|
| media_tag_name | 【选填】此值会传到微信供统计用,详情 点击这里 | 
| weapp_id | 【必填】小程序 id,如 gh_e9f675597c15 | 
| mini_program_type | 【选填】指定小程序版本,分为 Release(0),Test(1),Preview(2)三种版本类型,与小程序版本对应 | 
QQ 小程序特别入参
extraJson = "{\"mini_appid\":\"1109878856\",
\"mini_path\":\"pages/index/index\",
\"mini_webpage_url\":\"http://www.qq.com\",
\"mini_program_type\":3}";
| 参数名称 | 说明 | 
|---|---|
| mini_appid | 【必填】小程序的AppId | 
| mini_path | 【必填】小程序的展示路径,不填唤起默认小程序首页,可携带参数,例:pages/main/index?a=123&b=123 | 
| mini_webpage_url | 兼容低版本的网页链接,MSDK 会自动把 link 值赋给 mini_webpage_url(分享到空间时,link 值会赋给 targetURL),游戏无需在 extraJson 中传入该参数 | 
| mini_program_type | 【选填】小程序的类型,默认正式版(3),可选测试版(1) | 
5.5 空间新能力说明及示例
QQ 空间新能力(带小尾巴,支持配置热区、webview弹窗、轨迹手势)由平台提供,具体功能需要由游戏侧和平台沟通,在平台侧进行配置。分享的视频、跳转链接由游戏侧根据平台提供的接入文档生成,复用到 MSDK 分享邀请消息到空间的接口。
空间新分享能力介绍(由平台提供):
- 内部访问:http://km.oa.com/group/mobileqqgamecenter/articles/show/382797
 - 外部访问(以 km 文档为准):https://docs.qq.com/doc/DY2lhTHRld05aaU12
 
空间新分享能力接入文档(由平台提供):
- 内部访问:http://km.oa.com/group/mobileqqgamecenter/articles/show/387806
 - 外部访问(以 km 文档为准):https://docs.qq.com/doc/DY3BOZFpyR3N0Tkx6
 
空间新能力需要和平台沟通接入,可联系 MSDK助手 对接
[info] 分享 icon 在平台统一配置,不通过 MSDK 接口传参
QQ 空间新能力-分享图片到空间
示例代码如下:
var reqInfo = new MSDKFriendReqInfo
{
	Type = FriendReqType.Friend_REQ_INVITE,
	Title = "巨龙睁眼的那一刻,肾上腺素飙升!",
	Desc = "《龙族幻想》一分钟短片揭露龙族兴衰历史!",
	Link = "http://m.gamecenter.qq.com/directout/detail/1106977030?_wv=2147484679&_wwv=4&ADTAG=gamecenter&autodownload=1&pf=invite&appid=1106977030&asyncMode=3&appType=1&_nav_bgclr=ffffff&_nav_titleclr=ffffff&_nav_txtclr=ffffff&_nav_anim=true&_nav_alpha=0",
	// MSDK 5.9 及之前版本,Android 通过 ImagePath 字段传图片
	// ImagePath = "http://a4.qpic.cn/psb?/V13unC2l0XwD6y/tWdnyrIa5eIJUdqcPfUz63QuKIUDJpNpt3yBiqE02qQ!/b/dL8AAAAAAAAA&ek=1&kp=1&pt=0&bo=3AVMA9wFTAMRECc!&tl=1&vuin=3052014295&tm=1567681200&sce=60-2-2&rf=viewer_311"
	// MSDK 5.10 及之后版本,双端均通过 ThumbPath 传图片
	ThumbPath = "http://a4.qpic.cn/psb?/V13unC2l0XwD6y/tWdnyrIa5eIJUdqcPfUz63QuKIUDJpNpt3yBiqE02qQ!/b/dL8AAAAAAAAA&ek=1&kp=1&pt=0&bo=3AVMA9wFTAMRECc!&tl=1&vuin=3052014295&tm=1567681200&sce=60-2-2&rf=viewer_311"
};
MSDKFriend.Share (reqInfo, "QQ");MSDKFriendReqInfo info;
info.type = kMSDKFriendReqTypeInvite;
info.title = "巨龙睁眼的那一刻,肾上腺素飙升!";
info.desc = "《龙族幻想》一分钟短片揭露龙族兴衰历史!";
info.link = "http://m.gamecenter.qq.com/directout/detail/1106977030?_wv=2147484679&_wwv=4&ADTAG=gamecenter&autodownload=1&pf=invite&appid=1106977030&asyncMode=3&appType=1&_nav_bgclr=ffffff&_nav_titleclr=ffffff&_nav_txtclr=ffffff&_nav_anim=true&_nav_alpha=0";
// MSDK 5.9 及之前版本,Android 通过 imagePath 字段传图片
// info.imagePath = "http://a4.qpic.cn/psb?/V13unC2l0XwD6y/tWdnyrIa5eIJUdqcPfUz63QuKIUDJpNpt3yBiqE02qQ!/b/dL8AAAAAAAAA&ek=1&kp=1&pt=0&bo=3AVMA9wFTAMRECc!&tl=1&vuin=3052014295&tm=1567681200&sce=60-2-2&rf=viewer_311";
// MSDK 5.10 及之后版本,双端均通过 thumbPath 传图片
info.thumbPath = "http://a4.qpic.cn/psb?/V13unC2l0XwD6y/tWdnyrIa5eIJUdqcPfUz63QuKIUDJpNpt3yBiqE02qQ!/b/dL8AAAAAAAAA&ek=1&kp=1&pt=0&bo=3AVMA9wFTAMRECc!&tl=1&vuin=3052014295&tm=1567681200&sce=60-2-2&rf=viewer_311";
MSDKFriend::Share(info, "QQ");[info] link 传跳转链接。MSDK 5.9 及之前版本,通过字段 imagePath(Android) / thumbPath(iOS) 传分享的图片;MSDK 5.10 及之后版本,双端均通过字段 thumbPath 传分享的图片;支持本地图片。图片大小不超过 1M。
当传入 thumbPath 作为预期分享的图片路径时,imagePath 参数请不要传参,会导致图片的分享路径覆盖。
分享效果如下图所示:

QQ 空间新能力-分享视频到空间
示例代码如下:
var reqInfo = new MSDKFriendReqInfo
{
	Type = FriendReqType.Friend_REQ_INVITE,
	Title = "巨龙睁眼的那一刻,肾上腺素飙升!",
	Desc = "《龙族幻想》一分钟短片揭露龙族兴衰历史!",
	// MSDK 5.9 及之前版本,Android 通过 ImagePath 字段传视频缩略图
	// ImagePath = "https://game.gtimg.cn/images/xiawa/cp/D181226/images/96.png",
	// MSDK 5.10 及之后版本,双端均通过 ThumbPath 传视频缩略图
	ThumbPath = "https://game.gtimg.cn/images/xiawa/cp/D181226/images/96.png",
	Link = "https://v.qq.com/x/page/e08824fm35c.html?_sharetype=1&_shareid=12345&_appid=1106396765"
};
MSDKFriend.Share (reqInfo, "QQ");MSDKFriendReqInfo info;
info.type = kMSDKFriendReqTypeInvite;
info.title = "巨龙睁眼的那一刻,肾上腺素飙升!";
info.desc = "《龙族幻想》一分钟短片揭露龙族兴衰历史!";
// MSDK 5.9 及之前版本,Android 通过 imagePath 字段传视频缩略图
// info.imagePath = "https://game.gtimg.cn/images/xiawa/cp/D181226/images/96.png";
// MSDK 5.10 及之后版本,双端均通过 thumbPath 传视频缩略图
info.thumbPath = "https://game.gtimg.cn/images/xiawa/cp/D181226/images/96.png";
info.link = "https://v.qq.com/x/page/e08824fm35c.html?_sharetype=1&_shareid=12345&_appid=1106396765";
MSDKFriend::Share(info, "QQ");[info] link 传视频链接。MSDK 5.9 及之前版本,通过字段 imagePath(Android) / thumbPath(iOS) 传视频缩略图;MSDK 5.10 及之后版本,双端均通过字段 thumbPath 传视频缩略图;支持本地图片
分享效果如下图所示:

5.6 错误码
见错误码说明。
All rights reserved.