Remote Config 客户端SDK接入指南
Remote Config 客户端SDK接入指南
1.安装配置 UOS Launcher
参考 Launcher 教程,安装 Launcher 后,关联 UOS APP,开启 Remote Config 服务并安装 Remote Config SDK。
注意: 请务必确认在进行后续教程之前,已经成功完成了 Launcher 教程的安装步骤,否则可能导致后续接入无法顺利进行。
2.核心类&接口
SDK中Runtime使用的类RemoteConfigSDK
using Unity.UOS.Config;
using Unity.UOS.Config.Model;
public class RemoteConfigSDK
{
// 初始化
public static async Task InitializeAsync(){}
// 获取统一的配置项
public static async Task<UosRemoteConfigResult<GetPlayerSettingsResponse>>
GetPlayerSettingsAsync(GetPlayerSettingsRequest request){}
// 获取用户相关的配置项
public static async Task<UosRemoteConfigResult<GetPlayerOverridesResponse>>
GetPlayerSettingsOverridesAsync(GetPlayerOverridesRequest request){};
}3.集成示例
初始化SDK
using Unity.UOS.Config;
// 使用 UOS Launcher 方式初始化SDK, 更多SDK初始化方式见 sdk package sample 目录
try
{
RemoteConfigSDK.Initialize();
}
catch (RemoteConfigException e)
{
Debug.Log($"failed to initialize sdk: {e.Message}");
throw;
}SDK鉴权
请您在使用 当前服务的SDK 之前,先确认是否需要同步启用我们的 UOS Passport 服务。
启用 UOS Passport 服务,可实现 UOS 系统账号体系打通(即多服务共用同一套 UOS Passport 账号,无需重复授权登录),简化账号管理流程。
特别注意 : UOS Passport 服务为独立计费服务,启用后将根据其专属计费规则额外计费: UOS Passport 计费规则
- 不使用 UOS Passport。 请确保在调用 当前服务的SDK 提供的方法之前 已经完成用户授权:
using Unity.UOS.Auth;
// 用户授权 (每次初始化服务SDK 需进行用户授权)
string userId = <userId>; // 需要授权的 UserId
string userName = <userName>; // 可选, 需要授权的 UserName
await AuthTokenManager.GenerateAccessToken(userId, userName);使用 UOS Passport。 请确保 已开通 UOS Passport 服务 并在调用 当前服务的SDK 提供的方法之前 用户已经完成 Passport 用户登录:
- 方式一:使用「Passport 外部账号系统接入」进行登录
- 方式二:使用「Passport Login」进行登录
获取App统一的配置信息
using Cloud;
using Unity.UOS.Config;
var req = new GetPlayerSettingsRequest()
{
Keys = { "Alice", "Bob", "Charlie" },
Types_ = { ConfigType.Int, ConfigType.Bool, ConfigType.String },
};
var result = await RemoteConfigSDK.GetPlayerSettingsAsync(req);
if (result.IsSuccess())
{
GetPlayerSettingsResponse response = result.data;
// handle it
Debug.Log("success");
int i = 1;
foreach (var entry in response.Settings)
{
Debug.Log("item #" + i);
Debug.Log("key: " + entry.Key);
Debug.Log("val: " + entry.Value.Value);
Debug.Log("type: " + entry.Value.Type);
i++;
}
}获取和用户相关的配置信息
using Cloud;
using Unity.UOS.Config;
// 开发者自定义的结构体
public class SampleUserAttributes
{
public string userID;
public string rank;
}
// 开发者自定义的结构体
public class SampleAppAttributes
{
public string packageVersion;
public bool isDebugBuild;
}
var userAttributes = new SampleUserAttributes
{
userID = "<userId>",
rank = "<rank>"
};
var appAttributes = new SampleAppAttributes
{
packageVersion = "1.2.3",
isDebugBuild = false
};
var req = new GetPlayerOverridesRequest
{
UserId = "1234",
PersonaId = "5678",
IsDebugBuild = false,
PackageVersion = "1.2.3",
Attributes = ModelUtil.ConvertToAttributes(appAttributes, userAttributes)
};
var result = await RemoteConfigSDK.GetPlayerSettingsOverridesAsync(req);
if (result.IsSuccess())
{
GetPlayerOverridesResponse response = result.data;
// handle it
}4.错误码
public enum UosRemoteConfigErrorCode : int
{
UNAUTHENTICATED = 16000,
UNAUTHENTICATED_NO_AUTH_INFO = 16001,
UNAUTHENTICATED_NO_APP_ID = 16002,
UNAUTHENTICATED_INVALID_USER_ID = 16003,
UNAUTHENTICATED_NO_TOKEN = 16004,
UNAUTHENTICATED_TOKEN_EXPIRED = 16005,
}