getManagerWithName:options:
获取功能管理器
getManagerWithName:options: 是 SUDRT 协议中的一个实例方法,用于获取引擎内部的核心子系统管理器。该方法采用了“服务定位器”模式,允许宿主 App 通过特定的常量 Key 动态获取对应的功能模块(如用户中心、插件中心、包管理中心等),从而实现按需调用。
方法声明
objectivec
/**
* 获取特定的管理器组件。
* @param name 唯一标识管理器的常量字符串(见下表)。
* @param options 获取管理器时的附加配置参数(通常传 nil)。
* @return 对应的管理器实例对象,需根据文档强转为具体类型;若不支持则返回 nil。
*/
- (nullable NSObject *)getManagerWithName:(NSString *)name options:(nullable NSDictionary *)options;常用管理器 Key
通过该方法可以获取以下核心组件:
| 常量 Key | 对应管理器功能 |
|---|---|
| SUDRT_KEY_MANAGER_USER | 用户管理器:负责同步 App 用户信息、处理登录态鉴权及多端账号同步。 |
| SUDRT_KEY_MANAGER_GAME_PACKAGE | 包管理器:负责查询已安装的游戏列表、获取包版本信息及清理特定游戏资源。 |
| SUDRT_KEY_MANAGER_PLUGIN | 插件管理器:负责动态加载或卸载引擎扩展插件。 |
运行行为
- 单例映射:对于同一个
SUDRT实例,相同的name通常会返回同一个单例对象,保证状态的一致性。 - 按需初始化:部分管理器采用懒加载机制,只有在第一次调用该方法请求时才会进行初始化。
- 类型转换:该方法返回的是通用的
NSObject,开发者需要根据所请求的 Key,将其强制转换为对应的协议类型(如id<SUDRTUserManager>)。
代码示例
以下是获取用户管理器并注入当前登录用户信息的典型用法:
objectivec
// 1. 获取用户管理器实例
id<SUDRTUserManager> userManager = (id<SUDRTUserManager>)[self.sdkInstance getManagerWithName:SUDRT_KEY_MANAGER_USER options:nil];
if (userManager) {
// 2. 注入 App 层的用户信息
NSDictionary *userInfo = @{
@"userId": @"user_9958",
@"nickname": @"代码猎人",
@"avatar": @"https://example.com/a.jpg"
};
[userManager updateUserInfo:userInfo];
NSLog(@"[SUD] 用户管理器配置成功");
}注意事项
- 非空检查:由于某些轻量级或精简版引擎可能未集成特定模块,调用后**务必判断返回值是否为
nil**。 - 选项参数:大多数情况下
options传入nil即可。只有在特定的定制化场景下(如需要多实例隔离的管理器),才需要查阅该管理器的专项文档来传入配置。 - 生命周期:管理器的生命周期通常与
SUDRT实例绑定。当主引擎实例销毁时,这些管理器也会同步失效。