11/25/2024 10:18:49
好友模块
一、概述
好友模块是 MSDK 的一个社交功能模块,主要功能包括:
- 查询个人信息
- 添加 QQ 好友
二、接入向导
2.1 注册回调
1)功能描述
MSDK 好友模块的回调,游戏需要注册回调函数进行处理;通过平台侧拉取的信息,手Q是实时的,微信可能会有延迟,延迟时间是0-4小时。
2)接口声明
C#
C++
/// <summary>
/// 登出回调、应用唤醒回调
/// </summary>
public static event OnMSDKRetEventHandler<MSDKBaseRet> LoginBaseRetEvent;
/// <summary>
//// 登录回调,包括 login、bind、autologin、switchuser 等
/// </summary>
public static event OnMSDKRetEventHandler<MSDKLoginRet> LoginRetEvent;
/// 基本结果的回调
public static event OnMSDKRetEventHandler<MSDKBaseRet> FriendRetEvent;
/// 查找好友的回调
public static event OnMSDKRetEventHandler<MSDKFriendRet> QuereyFriendEvent;
class MSDKLoginObserver
{
public:
// 登录回调,包括 login、bind、autologin、switchuser 等
virtual void OnLoginRetNotify(const MSDKLoginRet &loginRet) {};
// 登出回调、应用唤醒回调
virtual void OnBaseRetNotify(const MSDKBaseRet &baseRet) {};
};
class MSDKFriendObserver
{
public:
/// 基本结果的回调
virtual void OnDeliverMessageNotify(const MSDKBaseRet &baseRet) {};
/// 查找好友的回调
virtual void OnQueryFriendNotify(const MSDKFriendRet &friendRet) {};
};
3)示例代码
C#
C++
MSDKLogin.LoginRetEvent += OnLoginRetEvent;
MSDKLogin.LoginBaseRetEvent += OnLoginBaseRetEvent;
MSDKFriend.FriendRetEvent += OnFriendRetEvent;
MSDKFriend.QuereyFriendEvent += OnQuereyFriendEvent;
private void OnLoginRetEvent(MSDKLoginRet loginRet)
{
Debug.Log ("OnLoginRetNotify in Login");
string methodTag = "";
if (loginRet.MethodNameId == (int)MSDKMethodNameID.MSDK_LOGIN_QUERYUSERINFO) {
methodTag = "QueryUserInfo";
}
else
{
// other things...
}
SampleInstance.showRetDialog(methodTag, loginRet);
}
private void OnLoginBaseRetEvent(MSDKBaseRet baseRet)
{
Debug.Log ("OnBaseRetNotify in Login");
// login things...
}
public void OnFriendRetEvent(MSDKBaseRet baseRet)
{
string methodTag = "";
if (baseRet.MethodNameId == (int)MSDKMethodNameID.MSDK_FRIEND_ADD_FRIEND) {
methodTag = "AddFriend";
}
else {
// other thing...
}
SampleInstance.showRetDialog(methodTag, baseRet);
}
//销毁的时候需要移除监听
private void OnDestroy()
{
MSDKLogin.LoginRetEvent -= OnLoginRetEvent;
MSDKLogin.LoginBaseRetEvent -= OnLoginBaseRetEvent;
MSDKFriend.FriendRetEvent -= OnFriendRetEvent;
MSDKFriend.QuereyFriendEvent -= OnQuereyFriendEvent;
}
MSDKLogin::SetLoginObserver(new MSDKDemoBaseLoginObserver());
MSDKFriend::SetFriendObserver(new MyFriendObserver());
class MSDKDemoBaseLoginObserver: public GCloud::MSDK::MSDKLoginObserver {
// 登录回调,包括 queryUserInfo、login、bind、autologin、switchuser 等
public:
virtual void OnLoginRetNotify(const GCloud::MSDK::MSDKLoginRet &loginRet) {
UMSDKDemoBase::showNormalAlert(loginRet);
};
// 登出回调、应用唤醒回调
virtual void OnBaseRetNotify(const GCloud::MSDK::MSDKBaseRet &baseRet) {
// other things...
UMSDKDemoBase::showNormalAlert(baseRet);
};
};
// 好友模块监听
class MyFriendObserver : public MSDKFriendObserver {
public:
void OnDeliverMessageNotify(const MSDKBaseRet &baseRet) {
UMSDKDemoBase::showNormalAlert(baseRet);
};
void OnQueryFriendNotify(const MSDKFriendRet &friendRet) {
UMSDKDemoBase::showNormalAlert(friendRet);
};
};
4)数据结构
MSDKLoginRet 详解
继承自 MSDKBaseRet,包含基础的信息
成员变量名称 | 类型 | 说明 |
---|---|---|
openID | string | 用户ID |
token | string | 用户凭证 |
tokenExpire | long | 过期时间 |
firstLogin | int | 是否首次登陆,未知:-1,是:1,否:0 |
regChannelDis | string | 首次注册的分发渠道 |
userName | string | 昵称 |
gender | int | 性别,未定义:0,男:1,女:2 微信和手Q渠道固定返回 0 |
pictureUrl | string | 头像链接 |
pf | string | pf值 |
pfkey | string | pfkey |
realNameAuth | bool | 是否需要实名认证 |
channelID | int | 渠道ID |
channel | string | 渠道名 |
channelInfo | string | 第三方渠道登录信息 |
confirmCode | string | 确认码,绑定失败后返回 |
confirmCodeExpireTime | string | 确认码过期时间戳 |
bindList | string | 绑定信息(JSON数据,数组类型),bindlist 详情请参阅查询绑定关系 |
MSDKFriendRet 详解
继承自 MSDKBaseRet,包含基础的信息
成员变量名称 | 类型 | 说明 |
---|---|---|
friendInfoList | List<MSDKPersonInfo> | 好友列表 |
2.2 查询个人账号信息
1)功能描述
在游戏中,获取用户当前登录渠道的账号信息,包括第三方的账号信息
2)接口声明
C#
C++
public static void QueryUserInfo()
public static void QueryUserInfo();
3)示例代码
C#
C++
MSDKLogin.QueryUserInfo();
MSDKLogin::QueryUserInfo();
如果业务有修改手Q玩家头像尺寸需求,注意不要改变原链接字段拼接结构
以下为手Q平台侧玩家个人头像返回链接样式,供业务参考,以平台最终返回为准
- 正常身份:http://thirdqq.qlogo.cn/g?b=oidb&k=6AJZXGDES1gHgiaK9kbIJlA&s=100&t=1466475684
- 虚拟账号身份:http://thirdqq.qlogo.cn/qqopen/ZdvYp9s7k6o0mHZMOqNJ3Na28broRWwlTZtH7ZzuYrIibicBOy2ZNXMDlBricO1hh6G/100?v=ac9c
- 平台兜底:https://q.qlogo.cn/qqapp/1106977030/9C38601899722D920F157C8B510F3E36/100
2.3 添加好友
1)功能描述
玩家可以在游戏中直接添加(拉起手Q)游戏玩家为QQ好友(多次点击不会发送多条添加QQ申请)。目前只有QQ支持该功能。
2)接口声明
C#
C++
public static void AddFriend(MSDKFriendReqInfo info, string channel = "")
public static void AddFriend(const MSDKFriendReqInfo &reqInfo, const string &channel = "");
3)入参说明
参数名称 | 参数类型 | 说明 |
---|---|---|
info | MSDKFriendReqInfo | 好友模块请求结构体,主要包含请求对象,请求信息等重要入参 |
channel | string | 渠道信息,比如“QQ” |
4)示例代码
C#
C++
var reqInfo = new MSDKFriendReqInfo
{
Title = "title", // 加好友时选填,表示备注
Desc = "desc", //加好友时选填,表示验证信息
Type = FriendReqType.Friend_REQ_TEXT, // 加好友时选填
User = "friendOpenId", // 加好友时必填,好友 openid
};
MSDKFriend.AddFriend (reqInfo, "QQ");
MSDKFriendReqInfo info;
info.title = "title"; // 加好友时选填,表示备注
info.desc = "desc"; // 加好友时选填,表示验证信息
info.type = kMSDKFriendReqTypeText; // 加好友时选填
info.user = "friendOpenId"; // 加好友时必填,好友 openid
MSDKFriend::AddFriend (info, "QQ");
三、常见问题
3.1 MSDKPersonInfo 详解
成员变量名称 | 类型 | 说明 |
---|---|---|
openid | string | 用户ID |
userName | string | 昵称 |
gender | int | 性别,未定义:0,男:1,女:2 微信和手Q渠道固定返回 0 |
pictureUrl | string | 头像链接 |
country | string | 国家 |
province | string | 省份 |
city | string | 城市 |
language | string | 语言 |
3.2 MSDKFriendReqInfo 详解
成员变量名称 | 类型 | 说明 |
---|---|---|
Type | int | 分享消息时必填,加好友时选填。好友请求类型,后台静默或者是拉起应用 |
User | string | 加好友时必填,好友 openid |
Title | string | 分享消息时必填,分享的标题;加好友时选填,表示备注 |
Desc | string | 选填,概述,简单描述分享的目的;加好友时选填,表示验证信息 |
ImagePath | string | 选填,图片,可以是本地地址或者 URL,建议本地地址 |
ThumbPath | string | 选填,缩略图,一般是游戏的 icon,可以是本地 icon,也可以是 icon URL, 建议使用本地地址;微信分享最大支持 64k |
MediaPath | string | 选填,多媒体(音乐或视频),只支持本地地址 |
Link | string | 选填,分享链接,可以是图片、音乐、视频或者跳转的链接等。QQ渠道发送应用邀请时,此参数必填。微信渠道,link可以置空,但 ExtraJson 扩展字段中需带上"game_data"信息,二者不能同时置空 |
ExtraJson | string | 选填,扩展字段 |
3.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_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_SILEN, //小程序分享 (静默)
}
typedef enum MSDKFriendReqType
{
kMSDKFriendReqTypeText = 10000, //文字分享
kMSDKFriendReqTypeLink, //链接分享
kMSDKFriendReqTypeIMG, //图片分享
kMSDKFriendReqTypeInvite, //应用邀请
kMSDKFriendReqTypeMusic, //音乐分享
kMSDKFriendReqTypeVideo, //视频分享
kMSDKFriendReqTypeMiniApp, //小程序分享
kMSDKFriendReqTypePullUpMiniApp, //小程序拉起
kMSDKFriendReqTypeArk, //ARK分享
kMSDKFriendReqTypeTextSilent = 20000, //文字分享(静默)
kMSDKFriendReqTypeLinkSilent, //链接分享 (静默)
kMSDKFriendReqTypeIMGSilent, //图片分享 (静默)
kMSDKFriendReqTypeInviteSilent, //应用邀请 (静默)
kMSDKFriendReqTypeMusicSilent, //音乐分享 (静默)
kMSDKFriendReqTypeVideoSilent, //视频分享 (静默)
kMSDKFriendReqTypeMiniAppSilent, //小程序分享 (静默)
} MSDKFriendReqType;
Copyright © 2024 MSDK.
All rights reserved.
All rights reserved.