玩家服务 SDK 接入指南
玩家服务 SDK 接入指南
此服务需联系我们开通使用
1. 初始化Push SDK并连接到 Push Server
参考 Push SDK 初始化指南,初始化 Push SDK并连接到 Push Server。
2.集成示例
设置玩家状态
try{
var status = PlayerStatus.Busy; //玩家状态,仅支持填写PlayerStatus.Busy 和 PlayerStatus.Online
var customStatus = "gaming"; // 自定义状态,显示用。比如玩家处于busy状态,可通过该字段具体显示用户是正在组队中还是正在游戏中
await PushSDK.Instance.PlayerService.SetPlayerStatusAsync(status, customStatus);
}
catch(PushSDKClientException ex)
{
Debug.LogErrorFormat("Failed to set playerStatus. client ex: {0}", ex);
throw;
}
catch(PushSDKServerException ex)
{
Debug.LogErrorFormat("Failed to set playerStatus. server ex: {0}", ex);
throw;
}玩家属性管理
try{
// 设置游戏等级为10的属性,需要注意属性名称需预先在前端Push界面配置。不支持设置为配置的属性名称
var properties = new Dictionary<string, double>(){{"level", 10}};
await PushSDK.Instance.PlayerService.SetPlayerPropertiesAsync(properties);
// 获取当前玩家属性
properties = PushSDK.Instance.PlayerService.GetPlayerPropertiesAsync();
// 删除玩家属性
var propertyNames = new List<string>() {"level"}; // 要删除的玩家属性名称列表,如不填,将删除所有属性
await PushSDK.Instance.PlayerService.DeletePlayerPropertiesAsync(propertyNames);
}
catch(PushSDKClientException ex)
{
Debug.LogErrorFormat("Failed to process playerProperties. client ex: {0}", ex);
throw;
}
catch(PushSDKServerException ex)
{
Debug.LogErrorFormat("Failed to process playerProperties. server ex: {0}", ex);
throw;
}随机在线玩家
try{
// 随机条件,这里意思是仅从等级在5-10之间随机玩家
var propertyRanges = new List<PlayerPropertyRange>()
{
new PlayerPropertyRange()
{
PropertyName = "level",
Min = 5,
Max = 10
}
};
// 随机人数,随机10个人,最多20人
var playerCount = 10;
// 从等级在5-10之间的在线玩家(ONLINE状态,不会从BUSY状态完结中随机) 随机10位
var playerIds = await PushSDK.Instance.PlayerService.RandomOnlinePlayersAsync(playerCount, propertyRanges);
Debug.Log(JsonConvert.SerializeObject(playerIds));
}
catch(PushSDKClientException ex)
{
Debug.LogErrorFormat("Failed to random players. client ex: {0}", ex);
throw;
}
catch(PushSDKServerException ex)
{
Debug.LogErrorFormat("Failed to random players. server ex: {0}", ex);
throw;
}4. 附录
玩家服务核心类&接口
/// <summary>
/// 设置玩家状态,可设置为 Online 和 Busy。Online代表玩家在线且空闲,Busy代表玩家在线但处于对局中或者处于队伍中(即不可被邀请加入新的游戏)
/// </summary>
/// <param name="status"> 玩家状态,可选值为 Online 和 Busy</param>
/// <param name="customStatus">自定义玩家状态,比如玩家处于busy状态,可通过该字段具体显示用户是正在组队中还是正在游戏中</param>
public Task SetPlayerStatusAsync(PlayerStatus status, string customStatus = "");
/// <summary>
/// 设置玩家属性,比如设置玩家战力值为1000,等级为20. 在随机获取在线玩家时,即可通过设置属性范围,比如随机获取战力值在1000-2000的10位玩家
/// </summary>
/// <param name="properties"> 属性健值对</param>
/// <returns></returns>
public Task SetPlayerPropertiesAsync(Dictionary<string, double> properties);
/// <summary>
/// 获取玩家属性
/// </summary>
public Task<Dictionary<string, double>> GetPlayerPropertiesAsync();
/// <summary>
/// 删除玩家属性
/// </summary>
/// <param name="propertyNames">属性名称列表,如不填,代表当前玩家所有属性</param>
public Task DeletePlayerPropertiesAsync(List<string> propertyNames = null);
/// <summary>
/// 随机获取在线玩家,可设置属性范围,比如随机获取战力值在1000-2000的10位玩家
/// </summary>
/// <param name="count">随机获取的玩家数量,最大为20</param>
/// <param name="propertyRanges">属性范围列表,不填代表从全部在线空闲玩家中随机获取,填多个会取交集获取</param>
public Task<List<string>> RandomOnlinePlayersAsync(int count, List<PlayerPropertyRange> propertyRanges = null);