概述
关系链模块是MSDK提供的,以手Q、微信的好友关系为基础的信息查询服务,关系链模块提供以下功能场景:
显示详情接入向导
1 前置条件
1)您已经按初始化模块说明完成 初始化。
2)确认用户已经完成手Q/微信授权登录
2 参考Demo示例
1)手Q好友示例参考 Assets\Example\MsdkDemo.cs 脚本的 ShowQQ() 方法。
2)微信好友示例参考 Assets\Example\MsdkDemo.cs 脚本的 ShowWX() 方法。
3 绑定接口到按钮
绑定接口到按钮参考登录模块的接入向导的Step3。关系链接口调用示例如下:
using UnityEngine;
using System.Collections;
// Step1 引用MSDK库
using Msdk;
public class ClickTest : MonoBehaviour {
void Start () {
// Step2 设置是否使用PC调试桩环境
WGPlatform.SetPCDebug(true);
// Step3 设置MSDK关系链回调
MsdkEvent.Instance.RelationEvent += RelationCallback;
// Step4 初始化MSDK
WGPlatform.Instance.Init();
}
// Button需要绑定的方法,名称可随意
public void Clicked()
{
// 点击按钮后调用MSDK获取QQ同玩好友接口
WGPlatform.Instance.WGQueryQQGameFriendsInfo();
}
// MSDK关系链回调
public void RelationCallback(RelationRet ret)
{
// 查询关系链成功
switch (ret.type)
{
case (int)eRelationRetType.eRet_QueryMyInfo:
// 个人信息
break;
case (int)eRelationRetType.eRet_QueryGameFriends:
// 好友信息
break;
}
}
}
4 运行查看结果
运行查看结果参考登录模块的接入向导的Step4
5 调用此模块其他接口
1)查询个人信息:查询手Q微信用户的个人信息。
2)添加QQ好友:可以允许用户在游戏内调用msdk接口添加QQ好友。
查询个人信息
1、概括说明
1)手Q用户(WGQueryQQMyInfo) 用户通过手Q授权后, 游戏需要用户昵称, 头像等其他信息,可调用 WGQueryQQMyInfo ,个人信息包含: 昵称(nickname)、OpenId(openId)、头像小图(pictureSmall)、头像中图(pictureMiddle)、头像大图(pictureLarge).
2)微信用户(WGQueryWXMyInfo) 用户通过微信授权后, 游戏需要用户昵称, 头像等其他信息,可调用 WGQueryWXMyInfo ,个人信息包含: 昵称(nickname)、OpenId( openId)、头像小图(pictureSmall)、头像中图(pictureMiddle)、头像大图(pictureLarge).
3)Apple用户(WGQueryAppleMyInfo) 用户通过Apple授权后, 游戏需要邮箱,昵称等其他信息,可调用 WGQueryAppleMyInfo ,个人信息包含: 邮箱(apple_email), 名字前缀,头衔、敬称(apple_namePrefix),名字(apple_givenName),中间名(apple_middleName),姓(apple_familyName),名字后缀,学位、荣誉(apple_nameSuffix),昵称(apple_nickname), 其他字段为空。3.3.12版本开始新增Apple渠道。如中文名:张三,一般返回:apple_familyName = 张、apple_givenName = 三。
2、注册回调
1)功能描述
为接收msdk的关系链回调,游戏需要注册回调函数进行处理,建议在游戏的Awake函数中进行注册
2)接口声明
public delegate void RelationDelegate(RelationRet ret);
3)参数说明
无
4)返回值
返回值名称 | 类型 | 说明 |
---|---|---|
ret | RelationRet | 关系链结构体 |
5)示例代码
MsdkEvent.Instance.RelationEvent += (RelationRet ret) => {
Debug.Log(ret.ToString());
if (ret.flag == eFlag.eFlag_Succ) {
// 查询关系链成功
} else {
// 查询关系链失败
}
};
6)特殊说明
个人信息中是没有OpenId信息,需要OpenId信息可以通过登陆模块获取票据接口WGGetLoginRecord
获取。
查询个人信息和查询同玩好友回调可以通过RelationRet.type来区分。
7)名词解释
无
3、调用接口
1)功能描述
游戏可以通过调用WGQueryQQMyInfo/WGQueryWXMyInfo 接口查询个人信息以获取:昵称(nickname)、OpenId( openId)、头像小图40x40(pictureSmall)、头像中图60x60(pictureMiddle)、头像大图100x100(pictureLarge)
WGQueryAppleMyInfo 接口查询个人信息以获取:邮箱(apple_email), 名字前缀,头衔、敬称(apple_namePrefix),名字(apple_givenName),中间名(apple_middleName),姓(apple_familyName),名字后缀,学位、荣誉(apple_nameSuffix),昵称(apple_nickname), 其他字段为空。3.3.12版本开始新增Apple渠道。如中文名:张三,一般返回:apple_familyName = 张、apple_givenName = 三。
2)接口声明
Viod WGQueryQQMyInfo();
Viod WGQueryWXMyInfo();
Viod WGQueryAppleMyInfo();
3)参数说明
无
4)返回值
无,结果通过 RelationEvent 回调,设置回调参考注册回调
5)示例代码
WGPlatform.Instance.WGQueryQQMyInfo(); // 查询手Q用户个人信息
WGPlatform.Instance.WGQueryWXMyInfo(); // 查询微信用户个人信息
WGPlatform.Instance.WGQueryAppleMyInfo(); // 查询apple用户个人信息
6)特殊说明
- 个人信息中是没有OpenId信息,需要OpenId信息可以通过登陆模块获取票据接口WGGetLoginRecord获取。
如果业务有修改手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
Apple 登录后获取个人信息需要注意:
- Apple 登录只有在第一次授权时,才有 email 和 用户名相关信息返回,第二次登录时 Apple 不提供
- 可通过 设置 - AppID、iCLoud、iTues 和 App Store - 密码和安全性 - 使用您的 AppID 的 App -删除您的游戏授权,再次登录 Apple 才会提供 email 和 用户名相关信息返回
- MSDK 会把首次登录拿到的 email 和用户名存入 UserDefault 中,游戏每次调用 WGQueryAppleMyInfo 接口会返回给游戏侧,但是如果用户删除 App 这个信息会丢失,请务必知悉
7)名词解释
无
查询同玩好友信息
1、概括说明
1)手Q用户(WGQueryQQGameFriendsInfo) 用户通过手Q授权后, 可以通过WGQueryQQGameFriendsInfo拉取游戏内好友信息(例如好友高分排行). 好友的信息字段参考个人信息字段
2)微信用户(WGQueryWXGameFriendsInfo) 用户通过微信授权后, 可以通过WGQueryWXGameFriendsInfo拉取游戏内好友信息(例如好友高分排行). 好友的信息字段参考个人信息字段
2、注册回调
该接口与查询个人信息接口使用同一个回调如果已经设置了就不需要重复设置,没有设置请查看回调设置 RelationRet对象的persons属性是一个List, 其中的每个PersonInfo 对象即是好友信息, 好友信息包含: 昵称(nickname)、OpenId(openId)、头像小图40x40(pictureSmall)、头像中图60x60(pictureMiddle)、头像大图100x100(pictureLarge).
3、调用接口
1)功能描述
游戏可以通过调用WGQueryQQGameFriendsInfo/WGQueryWXGameFriendsInfo 接口查询玩当前游戏的好友信息以获取:昵称(nickname)、OpenId(openId)、头像小图40x40(pictureSmall)、头像中图60x60(pictureMiddle)、头像大图100x100(pictureLarge).
2)接口声明
Void WGQueryQQGameFriendsInfo();
Void WGQueryWXGameFriendsInfo();
3)参数说明
无
4)返回值
无,结果通过RelationEvent回调,设置回调参考注册回调
5)示例代码
WGPlatform.Instance.WGQueryQQGameFriendsInfo(); // 查询手Q用户同玩好友信息
WGPlatform.Instance.WGQueryWXGameFriendsInfo(); // 查询微信用户同玩好友信息
6)特殊说明
1)为了避免当获取个人信息(比如头像、名字)、 好友信息(比如头像、名字)失败时,导致游戏登入失败,请将查询个人信息、查询好友信息设置为非关键路径。
2)手Q、微信查询同玩好友的结果包含自己的信息。
3)V3.3.21 版本开始新增关系链回调接口中用户未授权错误码;若用户未授权关系链权限,则在回调接口OnRelationNotify
中,relationRet.flag = eFlag_UnPermission(-9)。
4)V3.3.28 版本开始 WGQueryWXGameFriendsInfo 接口新增返回 friendRemark(备注名) 字段。
注意:MSDK V3 联调环境、正式环境默认兼容老方案(nickName 优先使用微信好友备注,不返回 friendRemark 字段),如果业务侧需要切换使用新方案(nickName 对应微信昵称,friendRemark 对应微信好友备注),需要联系 MSDK 侧对业务进行配置更新启用新方案。
7)名词解释
同玩好友:玩当前游戏的好友玩家
非关键路径:是指不影响游戏登录过程的一种说法;MSDK将手Q\微信的登录过程定义为关键路径,登录过程一旦被打断将对游戏的正常进行造成严重影响。
添加QQ好友
1)概括说明
玩家可以在游戏中直接添加(拉起手Q)游戏玩家为QQ好友(多次点击不会发送多条添加QQ申请)。
2)注册回调
无
3)调用接口
1)功能描述
玩家可以在游戏中直接加其他游戏玩家为QQ好友。
2)接口声明
void WGAddGameFriendToQQ(string fopenid, string desc, string message);
3)参数说明
参数名称 | 类型 | 说明 |
---|---|---|
fopenid | string | 要添加好友的openid |
desc | string | 要添加好友的备注信息 |
message | string | 添加好友时发送的验证信息 |
4)返回值
无
5)示例代码
string openID = "44386ABB2C583E72CF436D3FAD31B323";
WGPlatform.Instance.WGAddGameFriendToQQ (openID, "断线的风筝", "你好,我是王者荣耀玩家:小刘");
6)特殊说明
无
7)名称解释
无
常见问题
1.4.0u以上版本查询个人信息和查询同玩好友回调可以通过RelationRet的type字段来区分。