跳到主要内容
版本:v3

第三方平台好友

阅读本文前请先了解好友模块的通用接口

查询第三方平台好友

调用以下接口可以查询当前玩家在第三方平台(比如 TapTap)上的同玩好友(互相关注的用户)。 该接口除了会返回好友列表外,还会返回游标。 指定游标和返回数量,可以实现翻页功能。 同时,支持根据在线状态获取排序后的结果(当前游戏在线的玩家在前)。

返回的第三方平台好友列表中会包括玩家在第三方平台的 ID、昵称、头像。 如前所述,第三方平台的好友列表只会返回同玩好友,也就是已经使用第三方平台账号登录过该游戏的好友。 通常情况下,同玩好友也是基于内建账户系统使用第三方平台账号登录游戏,因此第三方平台的好友列表还会返回相应的 TDSFriendInfo

特殊情况下,如果同玩好友通过其他方式,而非基于内建账户系统使用第三方平台账号登录游戏,那么第三方平台的好友列表仍会返回该玩家,但相应的 TDSFriendInfo 会是 null。 例如,假设游戏有两个渠道包,其中一个渠道包 a 基于内建账户系统使用 F 平台账号登录游戏,同时支持了好友功能,渠道包 b 自行实现了 F 平台账号的登录,并未支持好友功能。玩家 d 和 e 在 F 平台上互为好友,玩家 d 安装了渠道包 a 并通过它使用 F 平台账号登录游戏,玩家 e 则安装了渠道包 b 并通过它使用 F 平台账号登录游戏,那么玩家 d 调用以下接口查询第三方平台 F 的好友,返回列表中会包含 e,但 e 的 TDSFriendInfo 会是 null

// 首次查询
string platform = "taptap";
string cursor = null;
// 默认 50,最大 500
int limit = 50;
// 根据在线状态排序
SortCondition sortCondition = SortCondition.OnlineCondition
ThirdPartyFriendResult result = await TDSFriends.QueryThirdPartyFriendList(platform, cursor, limit, condition: sortCondition);

ReadOnlyCollection<ThirdPartyFriend> friends = result.FriendList;
foreach (ThirdPartyFriend friend in friends) {
string thirdPartyId = friend.Id;
string thirdPartyNickName = friend.Name;
string thirdPartyAvatarUrl = friend.Avatar;
TDSFriendInfo info = friend.FriendInfo;
}

// 翻页
string cursor = result.Cursor;
ThirdPartyFriendResult more = await TDSFriends.QueryThirdPartyFriendList(platform, cursor, limit, condition: sortCondition);

默认情况下,SDK 优先从本地缓存中查询,以避免不必要的网络开销。 游戏如果希望总是从网络获取查询结果,可以在查询时指定缓存策略。 无论查询时是否指定缓存策略,SDK 总是会缓存查询的结果。 换句话说,缓存策略只决定是否读缓存,不决定是否写缓存。

ThirdPartyFriendResult result = await TDSFriends.QueryThirdPartyFriendList(platform, cursor, limit,
TDSFriends.ThirdPartyFriendRequestCachePolicy.OnlyNetwork, sortCondition);

目前支持的第三方平台(platform)如下:

  • taptap(需要提交工单联系我们开通)
  • facebook(游戏需要支持 Facebook 登录)
  • twitter(游戏需要支持 Twitter 登录)