2026-04-10 22:04:51 +08:00
|
|
|
|
using System;
|
|
|
|
|
|
|
2026-04-10 22:38:28 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Brisk SDK 初始化参数。
|
|
|
|
|
|
/// </summary>
|
2026-04-10 22:04:51 +08:00
|
|
|
|
public sealed class BriskOptions
|
|
|
|
|
|
{
|
2026-04-10 22:38:28 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 服务端基础地址。可以传主机地址,SDK 会自动补上 <c>/api</c>。
|
|
|
|
|
|
/// </summary>
|
2026-04-10 22:04:51 +08:00
|
|
|
|
public string BaseUrl;
|
2026-04-10 22:38:28 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 项目标识。
|
|
|
|
|
|
/// </summary>
|
2026-04-10 22:04:51 +08:00
|
|
|
|
public string GameKey;
|
2026-04-10 22:38:28 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 客户端版本号。
|
|
|
|
|
|
/// </summary>
|
2026-04-10 22:04:51 +08:00
|
|
|
|
public string ClientVersion;
|
2026-04-10 22:38:28 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 设备标识。
|
|
|
|
|
|
/// </summary>
|
2026-04-10 22:04:51 +08:00
|
|
|
|
public string DeviceId;
|
2026-04-10 22:38:28 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 是否启用调试日志。
|
|
|
|
|
|
/// </summary>
|
2026-04-10 22:04:51 +08:00
|
|
|
|
public bool EnableLog;
|
2026-04-10 22:38:28 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 初始化时是否主动校验本地会话有效性。
|
|
|
|
|
|
/// </summary>
|
2026-04-10 22:04:51 +08:00
|
|
|
|
public bool ValidateSessionOnInitialize = true;
|
2026-04-10 22:38:28 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 自定义登录态持久化实现。
|
|
|
|
|
|
/// </summary>
|
2026-04-10 22:04:51 +08:00
|
|
|
|
public IBriskTokenStore TokenStore;
|
2026-04-10 22:38:28 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 自定义严重错误展示器。
|
|
|
|
|
|
/// </summary>
|
2026-04-10 22:04:51 +08:00
|
|
|
|
public IBriskErrorPresenter ErrorPresenter;
|
2026-04-10 22:38:28 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 阻断错误确认后的退出处理逻辑。
|
|
|
|
|
|
/// </summary>
|
2026-04-10 22:04:51 +08:00
|
|
|
|
public Action ExitHandler;
|
|
|
|
|
|
|
2026-04-10 22:38:28 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 校验并规范化初始化参数。
|
|
|
|
|
|
/// </summary>
|
2026-04-10 22:04:51 +08:00
|
|
|
|
public void Validate()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(BaseUrl))
|
|
|
|
|
|
{
|
|
|
|
|
|
throw new ArgumentException("BriskOptions.BaseUrl is required.", nameof(BaseUrl));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(GameKey))
|
|
|
|
|
|
{
|
|
|
|
|
|
throw new ArgumentException("BriskOptions.GameKey is required.", nameof(GameKey));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
BaseUrl = NormalizeBaseUrl(BaseUrl);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private static string NormalizeBaseUrl(string baseUrl)
|
|
|
|
|
|
{
|
|
|
|
|
|
var normalized = baseUrl.Trim().TrimEnd('/');
|
|
|
|
|
|
if (normalized.EndsWith("/api", StringComparison.OrdinalIgnoreCase))
|
|
|
|
|
|
{
|
|
|
|
|
|
return normalized;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return normalized + "/api";
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|