API目錄
- KY_nebulaStartBind - 啟動(dòng)Nebula設(shè)備綁定流程
- KY_nebulaConnect - 通過(guò)Nebula協(xié)議連接已綁定設(shè)備
- KY_nebulaConnect (簡(jiǎn)化版) - 簡(jiǎn)化版Nebula連接接口
- KY_nebulaSendData - 向Nebula設(shè)備發(fā)送JSON指令
- KY_nebulaLanSearchTimeout - 局域網(wǎng)搜索Nebula設(shè)備
- KY_nebulaSsidListReq - 獲取AP模式設(shè)備周邊Wi-Fi列表
- KY_nebulaSetWifiReq - 配置AP模式設(shè)備連接指定Wi-Fi
- KY_nebulaSetRegionReq - 設(shè)置Nebula設(shè)備區(qū)域信息
Nebula接口模塊介紹
Nebula接口是Kalay SDK針對(duì)iOS平臺(tái)提供的核心設(shè)備交互接口集,主要用于設(shè)備綁定、Nebula協(xié)議連接、局域網(wǎng)設(shè)備搜索、Wi-Fi配置、區(qū)域設(shè)置等關(guān)鍵場(chǎng)景,為APP與Nebula協(xié)議設(shè)備的全生命周期交互提供標(biāo)準(zhǔn)化調(diào)用方式。
KY_nebulaStartBind
功能描述:啟動(dòng) Nebula 設(shè)備綁定流程,將設(shè)備與用戶賬號(hào)關(guān)聯(lián)起來(lái)。
接口定義
- (void)KY_nebulaStartBind:(NSString *)udid
bindType:(BINDTYPE)bindtype
bindKey:(NSString *)bindKey;
參數(shù)說(shuō)明
| 參數(shù) | 類型 | 說(shuō)明 |
|---|---|---|
| udid | string | 設(shè)備的唯一標(biāo)識(shí)符(40位字符串)。 |
| bindtype | BINDTYPE | 綁定類型枚舉。詳細(xì)定義參考:BINDTYPE 枚舉。 |
| bindKey | string | 綁定密鑰,其內(nèi)容取決于 `bindtype`:
|
BINDTYPE 枚舉
| 枚舉值 | 枚舉常量 | 說(shuō)明 |
|---|---|---|
| 0 | ALREADY_BIND | 表示設(shè)備已被綁定。 |
| 1 | SERVER_BIND | 通過(guò)服務(wù)器進(jìn)行遠(yuǎn)程綁定(例如使用 PinCode)。 |
| 2 | AP_BIND | 在設(shè)備的 AP 模式下進(jìn)行局域網(wǎng)綁定。 |
回調(diào)說(shuō)明
暫無(wú)額外回調(diào),綁定結(jié)果需通過(guò)SDK全局回調(diào)或代理方法獲取
返回碼
暫無(wú)固定返回碼,綁定結(jié)果通過(guò)SDK全局錯(cuò)誤回調(diào)返回
代碼示例
NSString *udid = @"..."; // 設(shè)備的UDID
NSString *pinCode = @"123456"; // 設(shè)備的PIN碼
[self.camera KY_nebulaStartBind:udid bindType:SERVER_BIND bindKey:pinCode];
KY_nebulaConnect
功能描述:通過(guò) Nebula 協(xié)議與已綁定的設(shè)備建立連接。
接口定義
- (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;
參數(shù)說(shuō)明
| 參數(shù) | 類型 | 說(shuō)明 |
|---|---|---|
| udid | string | 設(shè)備的唯一標(biāo)識(shí)符(40位字符串)。 |
| credential | string | 設(shè)備的認(rèn)證憑證,在綁定成功后獲得。 |
| identity | string | 用戶身份標(biāo)識(shí)。 |
| deviceToken | string | 設(shè)備的推送令牌,用于喚醒。 |
| realm | string | 認(rèn)證領(lǐng)域。 |
| isWakeup | Boolean | 是否在連接前嘗試喚醒設(shè)備。 |
| isNebulaOnly | Boolean | 是否僅使用 Nebula 協(xié)議進(jìn)行連接。 |
| channel | int | 要建立的 AV 通道號(hào),通常為 0。 |
| password | string | 設(shè)備的訪問(wèn)密碼或令牌。 |
| isDecode | Boolean | 是否自動(dòng)解碼視頻流并顯示,默認(rèn)為 `true`。 |
| isYUV | Boolean | 是否希望接收 YUV 格式的原始視頻數(shù)據(jù),用于自定義渲染。 |
回調(diào)說(shuō)明
連接結(jié)果通過(guò)SDK的連接狀態(tài)回調(diào)方法返回,包含連接成功/失敗狀態(tài)及錯(cuò)誤信息
返回碼
失敗信息可通過(guò)SDK全局錯(cuò)誤回調(diào)的錯(cuò)誤碼判斷具體連接失敗原因
代碼示例
NSString *udid = @"...";
NSString *credential = @"..."; // 從綁定信息中獲取
NSString *password = @"..."; // 設(shè)備密碼
[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 (簡(jiǎn)化版)
功能描述:`KY_nebulaConnect` 的簡(jiǎn)化版本,減少了部分不常用的參數(shù),便于快速集成。
接口定義
- (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;
參數(shù)說(shuō)明
此接口的參數(shù)與完整版
KY_nebulaConnect 中的同名參數(shù)含義完全相同。它省略了 `identity`, `isWakeup`, `isNebulaOnly` 這三個(gè)參數(shù)。回調(diào)說(shuō)明
與完整版
KY_nebulaConnect 回調(diào)邏輯一致返回碼
與完整版
KY_nebulaConnect 返回碼邏輯一致代碼示例
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
功能描述:通過(guò) Nebula 通道向設(shè)備發(fā)送 JSON 格式的指令數(shù)據(jù),并等待響應(yīng)。
接口定義
- (void)KY_nebulaSendData:(NSString *)jsonData
udid:(NSString *)udid
responseBlock:(DataBlock)responseBlock
timeout:(NSInteger)timeout;
參數(shù)說(shuō)明
| 參數(shù) | 類型 | 說(shuō)明 |
|---|---|---|
| jsonData | string | 要發(fā)送的指令數(shù)據(jù),格式為 JSON 字符串。 |
| udid | string | 目標(biāo)設(shè)備的 UDID。 |
| responseBlock | DataBlock | 接收設(shè)備響應(yīng)的回調(diào) block。
|
| timeout | int | 等待響應(yīng)的超時(shí)時(shí)間,單位為秒。 |
回調(diào)說(shuō)明
設(shè)備響應(yīng)結(jié)果通過(guò) `responseBlock` 返回,超時(shí)或發(fā)送失敗時(shí) `data` 為 nil,`index` 為錯(cuò)誤碼
返回碼
`responseBlock` 中的 `index` 字段包含操作結(jié)果碼,0 表示成功,非0為錯(cuò)誤碼
代碼示例
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(@"收到響應(yīng): %@", responseDict);
} else {
NSLog(@"請(qǐng)求超時(shí)或失敗, index: %ld", (long)index);
}
} timeout:3.0];
KY_nebulaLanSearchTimeout
功能描述:在局域網(wǎng)內(nèi)搜索 Nebula 設(shè)備。
接口定義
- (void)KY_nebulaLanSearchTimeout:(NSInteger)timeout
responseBlock:(nonnull UDIDInfoBlock)responseBlock;
參數(shù)說(shuō)明
| 參數(shù) | 類型 | 說(shuō)明 |
|---|---|---|
| timeout | int | 搜索的超時(shí)時(shí)間,單位為秒。 |
| responseBlock | UDIDInfoBlock | 搜索結(jié)果回調(diào) block。
|
回調(diào)說(shuō)明
搜索完成后通過(guò) `responseBlock` 返回結(jié)果,無(wú)論是否搜索到設(shè)備都會(huì)觸發(fā)
返回碼
無(wú)固定返回碼,通過(guò) `responseBlock` 中的 `num` 字段判斷搜索結(jié)果(0表示無(wú)設(shè)備)
代碼示例
[self.camera KY_nebulaLanSearchTimeout:3.0 responseBlock:^(st_UDIDInfo * _Nonnull uuidInfo, int num) {
if (num > 0) {
NSLog(@"搜索到 %d 個(gè)設(shè)備:", num);
for (int i = 0; i < num; i++) {
st_UDIDInfo info = uuidInfo[i];
NSLog(@" 設(shè)備 UDID: %s", info.udid);
// ... 可以訪問(wèn) info 結(jié)構(gòu)體中的其他字段,如 IP 地址等
}
} else {
NSLog(@"未在局域網(wǎng)內(nèi)搜索到任何設(shè)備。");
}
}];
KY_nebulaSsidListReq
功能描述:向處于 AP 模式的設(shè)備發(fā)送請(qǐng)求,獲取其周圍可用的 Wi-Fi 網(wǎng)絡(luò)列表(SSID 列表)。
接口定義
- (void)KY_nebulaSsidListReq:(int)max_ap_count
responseBlock:(ArrayBlock)responseBlock;
參數(shù)說(shuō)明
| 參數(shù) | 類型 | 說(shuō)明 |
|---|---|---|
| max_ap_count | int | 請(qǐng)求設(shè)備返回的最大 AP 數(shù)量。 |
| responseBlock | ArrayBlock | 接收 SSID 列表的回調(diào) block,`arr` 是一個(gè)包含多個(gè) SSID 字符串的 `NSArray`。 |
回調(diào)說(shuō)明
Wi-Fi列表獲取結(jié)果通過(guò) `responseBlock` 返回,空數(shù)組表示獲取失敗
返回碼
無(wú)固定返回碼,通過(guò) `responseBlock` 中的數(shù)組長(zhǎng)度判斷結(jié)果
代碼示例
[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 模式的設(shè)備,使其連接到指定的 Wi-Fi 網(wǎng)絡(luò)。
接口定義
- (void)KY_nebulaSetWifiReq:(NSString *)ssid
password:(NSString *)password
enctype:(int)enctype
responseBlock:(DictionaryBlock)responseBlock;
參數(shù)說(shuō)明
| 參數(shù) | 類型 | 說(shuō)明 |
|---|---|---|
| ssid | string | 目標(biāo) Wi-Fi 網(wǎng)絡(luò)的名稱。 |
| password | string | 目標(biāo) Wi-Fi 網(wǎng)絡(luò)的密碼。 |
| enctype | int | Wi-Fi 加密類型。
|
| responseBlock | DictionaryBlock | 配置結(jié)果回調(diào) block,`dic` 中包含配置是否成功的信息。 |
回調(diào)說(shuō)明
Wi-Fi配置結(jié)果通過(guò) `responseBlock` 返回,字典中包含結(jié)果狀態(tài)標(biāo)識(shí)
返回碼
配置結(jié)果通過(guò) `responseBlock` 字典中的 `result` 字段判斷,0 表示成功,非0為錯(cuò)誤碼
代碼示例
NSString *wifiSSID = @"MyHomeWiFi";
NSString *wifiPassword = @"MySecurePassword123";
[self.camera KY_nebulaSetWifiReq:wifiSSID
password:wifiPassword
enctype:4 // WPA/WPA2
responseBlock:^(NSDictionary * _Nonnull dic) {
NSLog(@"設(shè)置 Wi-Fi 結(jié)果: %@", dic);
// 通??梢酝ㄟ^(guò)檢查字典中的某個(gè)鍵(如 @"result")來(lái)判斷是否成功
}];
KY_nebulaSetRegionReq
功能描述:設(shè)置設(shè)備的區(qū)域信息。
接口定義
- (void)KY_nebulaSetRegionReq:(int)region
responseBlock:(DictionaryBlock)responseBlock;
參數(shù)說(shuō)明
| 參數(shù) | 類型 | 說(shuō)明 |
|---|---|---|
| region | int | 區(qū)域代碼。具體的區(qū)域代碼映射需要參考 SDK 內(nèi)部定義或相關(guān)文檔。 |
| responseBlock | DictionaryBlock | 設(shè)置結(jié)果回調(diào) block。 |
回調(diào)說(shuō)明
區(qū)域設(shè)置結(jié)果通過(guò) `responseBlock` 返回,字典中包含設(shè)置是否成功的信息
返回碼
設(shè)置結(jié)果通過(guò) `responseBlock` 字典中的狀態(tài)碼字段判斷,0 表示成功
代碼示例
int targetRegion = 86; // 例如,中國(guó)的區(qū)域代碼為 86
[self.camera KY_nebulaSetRegionReq:targetRegion responseBlock:^(NSDictionary * _Nonnull dic) {
NSLog(@"設(shè)置區(qū)域結(jié)果: %@", dic);
}];
