11/08/2024 16:35:55
分享模块
一、概述
分享模块是 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 为必填项,内容不为空,格式参考示例代码 |
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 静默发送邀请
支持渠道:
参数名 | 类型 | 参数说明 |
---|---|---|
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 空间,空间新能力,详细说明参见 空间新能力说明及示例
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.