Nebula接口
iOS APIs - Nebula 接口
KY_nebulaStartBind
- 功能描述:
- 启动 Nebula 设备绑定流程,将设备与用户账号关联起来。
接口定义
- (void)KY_nebulaStartBind:(NSString *)udid
bindType:(BINDTYPE)bindtype
bindKey:(NSString *)bindKey;
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| udid | string | 设备的唯一标识符(40位字符串)。 |
| bindtype | BINDTYPE | 绑定类型枚举。详细定义参考:BINDTYPE 枚举。 |
| bindKey | string | 绑定密钥,其内容取决于 `bindtype`:
|
BINDTYPE 枚举
| 枚举值 | 枚举常量 | 说明 |
|---|---|---|
| 0 | ALREADY_BIND | 表示设备已被绑定。 |
| 1 | SERVER_BIND | 通过服务器进行远程绑定(例如使用 PinCode)。 |
| 2 | AP_BIND | 在设备的 AP 模式下进行局域网绑定。 |
代码示例
NSString *udid = @"..."; // 设备的UDID
NSString *pinCode = @"123456"; // 设备的PIN码
[self.camera KY_nebulaStartBind:udid bindType:SERVER_BIND bindKey:pinCode];
KY_nebulaConnect
- 功能描述:
- 通过 Nebula 协议与已绑定的设备建立连接。
接口定义
- (void)KY_nebulaConnect:(NSString *)udid
credential:(NSString *)credential
identity:(NSString *)identity
deviceToken:(NSString *)deviceToken
realm:(NSString *)realm
isWakeup:(BOOL)isWakeup
isNebulaOnly:(BOOL)isNebulaOnly
channel:(NSInteger)channel
password:(NSString *)password
isDecode:(BOOL)isDecode
isYUV:(BOOL)isYUV;
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| udid | string | 设备的唯一标识符(40位字符串)。 |
| credential | string | 设备的认证凭证,在绑定成功后获得。 |
| identity | string | 用户身份标识。 |
| deviceToken | string | 设备的推送令牌,用于唤醒。 |
| realm | string | 认证领域。 |
| isWakeup | Boolean | 是否在连接前尝试唤醒设备。 |
| isNebulaOnly | Boolean | 是否仅使用 Nebula 协议进行连接。 |
| channel | int | 要建立的 AV 通道号,通常为 0。 |
| password | string | 设备的访问密码或令牌。 |
| isDecode | Boolean | 是否自动解码视频流并显示,默认为 `true`。 |
| isYUV | Boolean | 是否希望接收 YUV 格式的原始视频数据,用于自定义渲染。 |
代码示例
NSString *udid = @"...";
NSString *credential = @"..."; // 从绑定信息中获取
NSString *password = @"..."; // 设备密码
[self.camera KY_nebulaConnect:udid
credential:credential
identity:nil
deviceToken:nil
realm:nil
isWakeup:YES
isNebulaOnly:YES
channel:0
password:password
isDecode:YES
isYUV:NO];
KY_nebulaConnect (简化版)
- 功能描述:
- `KY_nebulaConnect` 的简化版本,减少了部分不常用的参数,便于快速集成。
接口定义
- (void)KY_nebulaConnect:(NSString *)udid
credential:(NSString *)credential
deviceToken:(NSString *)deviceToken
realm:(NSString *)realm
channel:(NSInteger)channel
password:(NSString *)password
isDecode:(BOOL)isDecode
isYUV:(BOOL)isYUV;
参数说明
此接口的参数与完整版 KY_nebulaConnect 中的同名参数含义完全相同。它省略了 `identity`, `isWakeup`, `isNebulaOnly` 这三个参数。
代码示例
NSString *udid = @"...";
NSString *credential = @"...";
NSString *password = @"...";
[self.camera KY_nebulaConnect:udid
credential:credential
deviceToken:nil
realm:nil
channel:0
password:password
isDecode:YES
isYUV:NO];
KY_nebulaSendData
- 功能描述:
- 通过 Nebula 通道向设备发送 JSON 格式的指令数据,并等待响应。
接口定义
- (void)KY_nebulaSendData:(NSString *)jsonData
udid:(NSString *)udid
responseBlock:(DataBlock)responseBlock
timeout:(NSInteger)timeout;
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| jsonData | string | 要发送的指令数据,格式为 JSON 字符串。 |
| udid | string | 目标设备的 UDID。 |
| responseBlock | DataBlock | 接收设备响应的回调 block。
|
| timeout | int | 等待响应的超时时间,单位为秒。 |
代码示例
NSString *udid = @"...";
NSDictionary *cmdDict = @{@"action": @"get_status"};
NSString *jsonString = [[NSString alloc] initWithData:[NSJSONSerialization dataWithJSONObject:cmdDict options:0 error:nil] encoding:NSUTF8StringEncoding];
[self.camera KY_nebulaSendData:jsonString
udid:udid
responseBlock:^(NSData * _Nonnull data, NSInteger index) {
if (data) {
NSDictionary *responseDict = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSLog(@"收到响应: %@", responseDict);
} else {
NSLog(@"请求超时或失败, index: %ld", (long)index);
}
} timeout:3.0];
KY_nebulaLanSearchTimeout
- 功能描述:
- 在局域网内搜索 Nebula 设备。
接口定义
- (void)KY_nebulaLanSearchTimeout:(NSInteger)timeout
responseBlock:(nonnull UDIDInfoBlock)responseBlock;
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| timeout | int | 搜索的超时时间,单位为秒。 |
| responseBlock | UDIDInfoBlock | 搜索结果回调 block。
|
代码示例
[self.camera KY_nebulaLanSearchTimeout:3.0 responseBlock:^(st_UDIDInfo * _Nonnull uuidInfo, int num) {
if (num > 0) {
NSLog(@"搜索到 %d 个设备:", num);
for (int i = 0; i < num; i++) {
st_UDIDInfo info = uuidInfo[i];
NSLog(@" 设备 UDID: %s", info.udid);
// ... 可以访问 info 结构体中的其他字段,如 IP 地址等
}
} else {
NSLog(@"未在局域网内搜索到任何设备。");
}
}];
KY_nebulaSsidListReq
- 功能描述:
- 向处于 AP 模式的设备发送请求,获取其周围可用的 Wi-Fi 网络列表(SSID 列表)。
接口定义
- (void)KY_nebulaSsidListReq:(int)max_ap_count
responseBlock:(ArrayBlock)responseBlock;
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| max_ap_count | int | 请求设备返回的最大 AP 数量。 |
| responseBlock | ArrayBlock | 接收 SSID 列表的回调 block,`arr` 是一个包含多个 SSID 字符串的 `NSArray`。 |
代码示例
[self.camera KY_nebulaSsidListReq:10 responseBlock:^(NSArray * _Nonnull arr) {
if (arr.count > 0) {
NSLog(@"可用的 Wi-Fi 列表:");
for (NSString *ssid in arr) {
NSLog(@" - %@", ssid);
}
} else {
NSLog(@"未能获取到 Wi-Fi 列表。");
}
}];
KY_nebulaSetWifiReq
- 功能描述:
- 配置处于 AP 模式的设备,使其连接到指定的 Wi-Fi 网络。
接口定义
- (void)KY_nebulaSetWifiReq:(NSString *)ssid
password:(NSString *)password
enctype:(int)enctype
responseBlock:(DictionaryBlock)responseBlock;
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| ssid | string | 目标 Wi-Fi 网络的名称。 |
| password | string | 目标 Wi-Fi 网络的密码。 |
| enctype | int | Wi-Fi 加密类型。
|
| responseBlock | DictionaryBlock | 配置结果回调 block,`dic` 中包含配置是否成功的信息。 |
代码示例
NSString *wifiSSID = @"MyHomeWiFi";
NSString *wifiPassword = @"MySecurePassword123";
[self.camera KY_nebulaSetWifiReq:wifiSSID
password:wifiPassword
enctype:4 // WPA/WPA2
responseBlock:^(NSDictionary * _Nonnull dic) {
NSLog(@"设置 Wi-Fi 结果: %@", dic);
// 通常可以通过检查字典中的某个键(如 @"result")来判断是否成功
}];
KY_nebulaSetRegionReq
- 功能描述:
- 设置设备的区域信息。
接口定义
- (void)KY_nebulaSetRegionReq:(int)region
responseBlock:(DictionaryBlock)responseBlock;
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| region | int | 区域代码。具体的区域代码映射需要参考 SDK 内部定义或相关文档。 |
| responseBlock | DictionaryBlock | 设置结果回调 block。 |
代码示例
int targetRegion = 86; // 例如,中国的区域代码为 86
[self.camera KY_nebulaSetRegionReq:targetRegion responseBlock:^(NSDictionary * _Nonnull dic) {
NSLog(@"设置区域结果: %@", dic);
}];
