11/08/2024 16:35:55

好友模块

一、概述

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

  1. 查询个人信息
  2. 添加 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平台侧玩家个人头像返回链接样式,供业务参考,以平台最终返回为准

什么是虚拟账号,可点击查看

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.

results matching ""

    No results matching ""