描述: RTC引擎代理协议,用于处理RTC引擎的各种回调事件
版本支持: 3.10+
版本支持: 3.10+
接口概述: 登录结果回调
接口定义:
- (void)onLoginResult:(XYUserInfo *)userInfo errorCode:(NSString *)errorCode;
接口参数:
参数名 | 类型 | 是否必填 | 描述 |
userInfo | 否 | 用户信息,登录失败时返回nil | |
errorCode | NSString * | 否 | 错误码,登录成功时返回nil |
返回值: 无
版本支持: 3.10+
接口概述: 登出回调
接口定义:
- (void)onLogout;
接口参数: 无
返回值: 无
版本支持: 3.10+
接口概述: 账号在其他设备登录,被强制下线
接口定义:
- (void)onAccountWasKickOut;
接口参数: 无
返回值: 无
版本支持: 3.10+
接口概述: 网络异常,强迫下线
接口定义:
- (void)onNetworkAbnormalKickOut;
接口参数: 无
返回值: 无
版本支持: 3.10+
接口概述: 校验服务端证书,收到服务端认证请求时触发,在回调中完成对服务端证书和域名校验,trustCertificatesChain=NO时生效
接口定义:
- (void)onEvaluateServerTrust:(SecTrustRef)serverTrust
forDomain:(NSString *)domain
complete:(void (^)(BOOL success))complete;
接口参数:
参数名 | 类型 | 是否必填 | 描述 |
serverTrust | SecTrustRef | 是 | 服务端证书信息 |
domain | NSString * | 是 | 域名 |
complete | void (^)(BOOL success) | 是 | 校验结果,YES代表校验通过,请求继续向下执行,NO代表校验不通过,请求取消 |
返回值: 无
版本支持: 3.10+
接口概述: XYRTCSDK错误回调,详见错误码
接口定义:
- (void)onError:(NSString *)code message:(NSString *)message;
接口参数:
参数名 | 类型 | 是否必填 | 描述 |
code | NSString * | 是 | 错误码 |
message | NSString * | 是 | 错误信息 |
返回值: 无
@interface MyViewController ()
@end
@implementation MyViewController
#pragma mark - XYRTCEngineDelegate
// 登录相关
- (void)onLoginResult:(XYUserInfo *)userInfo errorCode:(NSString *)errorCode {
if (userInfo) {
NSLog(@"登录成功: %@", userInfo.userId);
// 处理登录成功逻辑
} else {
NSLog(@"登录失败: %@", errorCode);
// 处理登录失败逻辑
}
}
- (void)onLogout {
NSLog(@"用户已登出");
// 处理登出逻辑
}
- (void)onAccountWasKickOut {
NSLog(@"账号在其他设备登录,被强制下线");
// 处理强制下线逻辑
}
- (void)onNetworkAbnormalKickOut {
NSLog(@"网络异常,强迫下线");
// 处理网络异常下线逻辑
}
// 证书校验
- (void)onEvaluateServerTrust:(SecTrustRef)serverTrust
forDomain:(NSString *)domain
complete:(void (^)(BOOL success))complete {
// 自定义证书校验逻辑
BOOL isValid = [self validateServerTrust:serverTrust forDomain:domain];
complete(isValid);
}
- (BOOL)validateServerTrust:(SecTrustRef)serverTrust forDomain:(NSString *)domain {
// 实现证书校验逻辑
// 这里可以根据需要实现具体的证书校验
return YES; // 示例:直接通过
}
// 错误处理
- (void)onError:(NSString *)code message:(NSString *)message {
NSLog(@"RTC错误: %@ - %@", code, message);
// 处理错误逻辑
}
@end
// 更详细的证书校验实现
- (BOOL)validateServerTrust:(SecTrustRef)serverTrust forDomain:(NSString *)domain {
// 1. 检查证书链
SecTrustResultType result;
OSStatus status = SecTrustEvaluate(serverTrust, &result);
if (status != errSecSuccess) {
NSLog(@"证书评估失败: %d", (int)status);
return NO;
}
// 2. 检查证书结果
switch (result) {
case kSecTrustResultUnspecified:
case kSecTrustResultProceed:
// 证书有效
break;
case kSecTrustResultDeny:
case kSecTrustResultInvalid:
case kSecTrustResultRecoverableTrustFailure:
case kSecTrustResultFatalTrustFailure:
case kSecTrustResultOtherError:
NSLog(@"证书验证失败: %d", (int)result);
return NO;
default:
return NO;
}
// 3. 检查域名匹配
if (domain.length > 0) {
// 获取证书中的域名信息进行匹配
// 这里可以添加更详细的域名验证逻辑
}
return YES;
}