05/15/2024 15:19:51

分享模块

一、概述

分享模块是 MSDK 的一个社交功能模块,主要功能包括:

  1. 发送消息功能,消息类型包括好友邀请、文字、链接、图片、音乐、视频、小程序、视频号、状态等。微信渠道下部分类型可以给指定好友发送。
  2. 分享功能(微信朋友圈、微信游戏圈、QQ 空间、Facebook TimeLine、Twitter),分享类型包括文字、图片、链接、邀请、音乐、视频。

支持的渠道有:

  1. WeChat
  2. QQ
  3. Facebook
  4. Twitter
  5. System
  6. Line
  7. WhatsApp
  8. Kwai
  9. Instagram


其中,发送消息功能分为两类:

  • 静默发送 (Silence),调用 API 后直接分享,在应用后台执行并无弹窗
  • 弹窗发送 (Dialog),调用 API 后弹出分享框,用户需要进一步操作才能分享
发送类型 微信好友 微信状态 微信视频号 QQ小世界 QQ好友 Facebook Twitter System Line SMS WhatsApp Kwai
文本 (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空间 Facebook Twitter System Line WhatsApp Kwai Instagram
文本 (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)接口声明

C#
C++
/// 基本结果的回调
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)示例代码

C#
C++
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)接口声明

C#
C++
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
  • WhatsApp
  • Garena

[info]
(1)文本定向分享只支持微信,可以通过 User 传入目标对象的 openid;
(2)微信渠道分享的文本大小不能超过 10k;

参数名 参数类型 参数说明
Type int 分享指定的消息类型,必填
Desc string 概述,简单描述分享的目的,必填
User string 当使用 sopenid 时,必须在extraJson中加上 {\"isFriendInGame\":false};当使用 gopenid 时,可以在extraJson中加上 {\"isFriendInGame\":true} (非必须)

C#
C++
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 发送链接

支持渠道:

  • 微信
  • QQ
  • WhatsApp
  • Garena
  • Kwai

[info] 链接定向分享支持微信和 Kwai,可以通过 User 传入目标对象的 openid。

参数名 类型 参数说明
Type int 分享指定的消息类型,必填
User string 当使用 sopenid 时,必须在 extraJson 中加上 {\"isFriendInGame\":false};
当使用 gopenid 时,可以在 extraJson 中加上 {\"isFriendInGame\":true} (非必须)
Title string 分享的标题
QQ、Kwai 渠道必填
微信渠道 Android Title 和 Desc 不可以同时为空
其他渠道选填
Desc string 分享的内容
Kwai 渠道必填
微信渠道 Android Title 和 Desc 不可以同时为空
其他渠道选填
Link string 分享的链接,必填
ThumbPath string 缩略图的 URL,选填(Kwai 渠道必填)
ExtraJson string 扩展字段,用于透传 game_data 字段,选填
game_data string 游戏自定义透传数据,仅支持 QQ,选填

C#
C++
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 发送图片

支持渠道:

  • 微信
  • QQ
  • 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 字段,选填

C#
C++
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 字段,必填
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\,选填

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 字段,必填
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),选填

C#
C++
// 微信小程序分享
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\"}",
    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\"}";
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 为自定义透传参数;
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 发送音乐

支持渠道

  • 微信
  • QQ

C#
C++
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 为必填项,内容不为空,格式参考示例代码

C#
C++
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}";
};
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}”;
MSDKFriend::SendMessage(info, "WeChat");

[info] QQ 和 微信的游戏自定义数据可以通过 game_data 来透传,当触发 MSDK_LOGIN_WAKEUP 事件时,解析 MSDKBaseRet 中的 ExtraJson 字段即可。

3.7 静默发送邀请

支持渠道:

  • QQ
参数名 类型 参数说明
Type int 分享指定的消息类型,必填
User string 好友的 gopenid,必填
Title string 分享的标题,选填
Desc string 分享的内容,选填
Link string 手Q游戏中心详情页链接,必填
ImagePath string 分享图片的 URL,必填
ExtraJson string 扩展字段,用于透传 game_tag 字段,必填
game_tag string 平台分享类型统计,由平台侧分配,需同手Q平台沟通后填写,必填

C#
C++
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 版本开始支持)

C#
C++
// 拉起微信小程序
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 消息

支持渠道:

  • QQ

C#
C++
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"}

C#
C++
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 发送至状态,支持微信

C#
C++
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。 调用示例:

C#
C++
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 字段(注意大小写)。调用示例:

C#
C++
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
调用示例:

C#
C++
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 【选填】指定跳转后的小程序页面路径,不填默认为小程序首页

调用示例:

C#
C++
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)接口声明

C#
C++
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
  • WhatsApp

C#
C++
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 空间
  • Facebook
  • Twitter(仅 Android 平台)
  • System(iOS 平台)
  • WhatsApp

C#
C++
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 空间
  • Facebook
  • Twitter(仅 Android 平台)
  • System
  • WhatsApp

C#
C++
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 分享音乐

支持渠道:

  • 朋友圈

C#
C++
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 分享邀请

支持渠道:

C#
C++
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 空间
  • Facebook
  • Kwai
  • WhatsApp

C#
C++
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的功能说明
(3)Kwai视频分享请参考 Kwai的好友功能说明

4.7 分享微信游戏圈,仅支持图片(包括本地图片和网络图片)

C#
C++
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 空间

C#
C++
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 分享至视频号,支持微信视频号

C#
C++
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 分享至状态,支持微信

C#
C++
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
调用示例:

C#
C++
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 【选填】指定跳转后的小程序页面路径,不填默认为小程序首页

调用示例:

C#
C++
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 好友请求类型详解

C#
C++
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 分享邀请消息到空间的接口。

空间新分享能力介绍(由平台提供):

空间新分享能力接入文档(由平台提供):

空间新能力需要和平台沟通接入,可联系 MSDK助手 对接

[info] 分享 icon 在平台统一配置,不通过 MSDK 接口传参

QQ 空间新能力-分享图片到空间

示例代码如下:

C#
C++
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 空间新能力-分享视频到空间

示例代码如下:

C#
C++
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 错误码

错误码说明



Copyright © 2024 MSDK.
All rights reserved.

results matching ""

    No results matching ""