在使用 XYLink SDK 进行音视频通话之前,您需要首先进行 SDK 初始化。初始化是使用 SDK 的第一步,必须在调用任何其他功能之前完成。
在使用任何功能之前,必须先初始化 SDK:
// 创建回调接口
INemoSDKCallbacks* callbacks = new MySDKCallbacks();
// 配置SDK参数
XYConfigs configs;
configs.appId = "your_app_id";
configs.appSecret = "your_app_secret";
// 初始化 SDK
NemoSdkAdaptor::getInstance()->startup(callbacks, configs);
// 可选:设置服务器地址
NemoSdkAdaptor::getInstance()->setRemoteServer("your_server_url");
// 可选:设置自动探测服务器信息
XYAutoDetectServerInfo autoDetectInfo;
autoDetectInfo.serverList = "server1.com,server2.com,server3.com";
NemoSdkAdaptor::getInstance()->setAutoDetectServerInfo(autoDetectInfo);
// 可选:设置 UserAgent
NemoSdkAdaptor::getInstance()->setUserAgent("your_app_name/version");
通过回调函数监听初始化状态变化:
void onError(XYError errorCode, const XYString& errorMsg)
{
// 处理初始化错误
if (errorCode == XYError_InitFailed) {
// 初始化失败处理
}
}
API: startup
功能: NemoSDK初始化,必须在调用其他功能之前调用
接口定义:
virtual XYError startup(INemoSDKCallbacks* cb, const XYConfigs& configs) = 0;
参数:
cb
: INemoSDKCallbacks* - 回调接口指针configs
: XYConfigs - SDK配置信息返回值: XYError - 错误码,如果返回XYError_Unknown(-1)表示初始化结果尚未返回,为防止阻塞线程,切换为通过onError返回初始化结果
示例:
// 创建回调接口
INemoSDKCallbacks* callbacks = new MySDKCallbacks();
// 配置SDK参数
XYConfigs configs;
configs.appId = "your_app_id";
configs.appSecret = "your_app_secret";
// 初始化SDK
XYError result = NemoSdkAdaptor::getInstance()->startup(callbacks, configs);
API: setRemoteServer
功能: 设置服务器地址,用于指定连接的目标服务器
接口定义:
virtual void setRemoteServer(const char* server) = 0;
参数:
server
: const char* - 包含端口号的服务器地址,例如: xxx.com:8080示例:
NemoSdkAdaptor::getInstance()->setRemoteServer("your-server.com:8080");
功能: 设置自动探测服务器地址,SDK会自动选择最优的服务器
接口定义:
virtual void setAutoDetectServerInfo(XYAutoDetectServerInfo& autoServerInfo) = 0;
参数:
autoServerInfo
: XYAutoDetectServerInfo - 自动探测服务器地址信息示例:
XYAutoDetectServerInfo autoDetectInfo;
autoDetectInfo.serverList = "server1.com,server2.com,server3.com";
NemoSdkAdaptor::getInstance()->setAutoDetectServerInfo(autoDetectInfo);
API: setUserAgent
功能: 设置UserAgent,用于标识客户端应用
接口定义:
virtual void setUserAgent(const char* userAgent) = 0;
参数:
userAgent
: const char* - 用户代理字符串示例:
NemoSdkAdaptor::getInstance()->setUserAgent("MyApp/1.0.0");
API: reboot
功能: 网络波动可能造成初始化失败,网络恢复后调用此接口,无需重新初始化
接口定义:
virtual void reboot() = 0;
示例:
NemoSdkAdaptor::getInstance()->reboot();
API: shutdown
功能: 关闭SDK,释放所有资源
接口定义:
virtual void shutdown() = 0;
示例:
NemoSdkAdaptor::getInstance()->shutdown();
class SDKInitializer {
private:
bool _isInitialized = false;
public:
void initializeSDK() {
// 创建回调接口
INemoSDKCallbacks* callbacks = new MySDKCallbacks();
// 配置SDK参数
XYConfigs configs;
configs.appId = "your_app_id";
configs.appSecret = "your_app_secret";
// 基础初始化
XYError result = NemoSdkAdaptor::getInstance()->startup(callbacks, configs);
// 设置服务器地址(可选)
NemoSdkAdaptor::getInstance()->setRemoteServer("your-server.com:8080");
// 设置自动探测服务器(可选)
XYAutoDetectServerInfo autoDetectInfo;
autoDetectInfo.serverList = "server1.com,server2.com,server3.com";
NemoSdkAdaptor::getInstance()->setAutoDetectServerInfo(autoDetectInfo);
// 设置UserAgent(可选)
NemoSdkAdaptor::getInstance()->setUserAgent("MyApp/1.0.0");
}
void rebootSDK() {
// 网络恢复后重启
NemoSdkAdaptor::getInstance()->reboot();
}
void shutdownSDK() {
// 关闭SDK
NemoSdkAdaptor::getInstance()->shutdown();
_isInitialized = false;
}
// 错误回调
void onError(XYError errorCode, const XYString& errorMsg) {
QString error(errorMsg.str());
qDebug() << "SDK Error: code=" << errorCode << ", message=" << error;
if (errorCode == XYError_InitFailed) {
_isInitialized = false;
qDebug() << "SDK initialization failed";
}
// 发送错误信号
emit sdkError(errorCode, error);
}
bool isInitialized() const {
return _isInitialized;
}
};
状态 | 说明 |
未初始化 | SDK尚未调用startup() |
初始化中 | 正在执行startup() |
初始化成功 | startup()执行成功,可以正常使用SDK功能 |
初始化失败 | startup()执行失败,需要检查错误并重试 |
常见错误码及处理方式:
错误码 | 描述 | 处理方式 |
| 正常 | 初始化成功 |
| 初始化失败 | 检查网络连接,重试初始化 |
| 超时 | 检查网络连接,重试初始化 |
| 网络异常 | 检查网络连接状态 |
| 参数无效 | 检查传入的参数是否正确 |
更多错误码请查看:SDK回调错误码XYError
startup()
初始化 SDK,再进行其他操作shutdown()
释放资源reboot()
恢复,无需重新初始化方法 | 描述 | 链接 |
NemoSDK初始化 | ||
关闭SDK | ||
网络恢复后重启 | ||
设置服务器地址 | ||
设置自动探测服务器地址 | ||
设置UserAgent |
回调 | 描述 | 链接 |
错误回调 | ||
网络状态变化回调 | ||
服务器探测结果回调 |
结构体 | 描述 | 链接 |
自动探测服务器信息 | ||
服务器信息 |