更新时间:2024-11-18 11:32:38下载pdf
本文介绍了 IP 摄像机(IPC)相关的业务包,不同的业务包有不同的功能,您可以根据自己的需求加载。
涂鸦 iOS IPC 面板业务包 (TuyaSmartCameraPanelBizBundle
) 是基于 智能生活 App SDK 开发的一系列摄像机功能相关的面板 SDK。
业务包主要包括以下功能:
在 Podfile
文件中加入以下代码:
source "https://github.com/tuya/tuya-pod-specs"
source 'https://cdn.cocoapods.org/'
platform :ios, '11.0'
target 'your_target_name' do
# 添加摄像机面板业务包
pod 'TuyaSmartCameraPanelBizBundle'
end
然后在项目根目录下执行 pod update
命令,通过 CocoaPods 集成第三方库。CocoaPods 的使用请参考 CocoaPods Guides。
在工程的 info.plist
文件中添加需要的权限声明。
业务包中封装了一系列 RN(React Native)接口供面板调用,其中会涉及到部分苹果隐私权限的声明。
NSPhotoLibraryAddUsageDescription
NSMicrophoneUsageDescription
业务包实现 TYCameraProtocol
协议以提供服务。在 TYModuleServices
组件中查看 TYCameraProtocol.h
协议文件内容为:
#import <UIKit/UIKit.h>
@class TuyaSmartDeviceModel;
@protocol TYCameraProtocol <NSObject>
/**
获取摄像头 Native 面板
@param devId 摄像头设备的 devId
@param uiName 摄像头设备的 uiName,不同的 uiName 对应不同版本的面板 为 deviceModel 里的 uiName 属性
*/
- (UIViewController *)viewControllerWithDeviceId:(NSString *)devId uiName:(NSString *)uiName;
@optional
/**
跳转摄像头回放面板
@param deviceModel 摄像头设备
*/
- (void)deviceGotoCameraNewPlayBackPanel:(TuyaSmartDeviceModel *)deviceModel;
/**
跳转摄像头云存储面板
@param deviceModel 摄像头设备
*/
- (void)deviceGotoCameraCloudStoragePanel:(TuyaSmartDeviceModel *)deviceModel;
/**
跳转摄像头消息中心面板
@param deviceModel 摄像头设备
*/
- (void)deviceGotoCameraMessageCenterPanel:(TuyaSmartDeviceModel *)deviceModel;
/**
跳转摄像头相册面板
@param deviceModel 摄像头设备
*/
- (void)deviceGotoPhotoLibrary:(TuyaSmartDeviceModel *)deviceModel;
@end
业务包主要会依赖如下几个协议: TYSmartHomeDataProtocol
、 TYOTAGeneralProtocol
。
TYSmartHomeDataProtocol:提供加载设备面板所需的当前家庭信息,为 必须实现 的协议。
/**
获取当前的家庭,当前没有家庭的时候,返回 nil。
@return TuyaSmartHome
*/
- (TuyaSmartHome *)getCurrentHome;
TYOTAGeneralProtocol:进入设备面板时,提供检查设备固件更新的事件。实现如下方法用于检查固件升级:
/**
检查设备固件更新,如果有更新会显示展示出固件更新提示
@param deviceModel 需要检查固件升级的设备
@param isManual 是否手动检测升级
@param theme 主题色
YES: 手动检测升级,检测时弹出 loading 框。当有固件新版本时(检测升级、强制升级、提醒升级),显示 OTA VC。
NO: 自动检测升级,检测时不弹出 loading 框。当有强制升级时、提醒升级时,弹出固件升级提示,点确定后显示 OTA VC。
*/
- (void)checkFirmwareUpgrade:(TuyaSmartDeviceModel *)deviceModel isManual:(BOOL)isManual theme:(TYOTAControllerTheme)theme;
deviceModel.category
为 sp
类型的设备。TYSmartHomeDataProtocol
中的协议方法getCurrentHome
。TuyaSmartCameraPanelSDK
互斥,二者不能共存。迁移之前,请参考 业务包迁移。Objective-C
#import <TuyaSmartBizCore/TuyaSmartBizCore.h>
#import <TYModuleServices/TYSmartHomeDataProtocol.h>
- (void)initCurrentHome {
// 注册要实现的协议
[[TuyaSmartBizCore sharedInstance] registerService:@protocol(TYSmartHomeDataProtocol) withInstance:self];
}
// 实现对应的协议方法
- (TuyaSmartHome *)getCurrentHome {
TuyaSmartHome *home = [TuyaSmartHome homeWithHomeId:@"当前家庭 id"];
return home;
}
Swift
import TuyaSmartDeviceKit
class TYActivatorTest: NSObject,TYSmartHomeDataProtocol{
func test() {
TuyaSmartBizCore.sharedInstance().registerService(TYSmartHomeDataProtocol.self, withInstance: self)
}
func getCurrentHome() -> TuyaSmartHome! {
let home = TuyaSmartHome.init(homeId: 111)
return home
}
}
摄像机原生预览面板包括视频实时预览、清晰度切换、声音开关控制、截图、录制、对讲、移动侦测、PTZ 方向控制、收藏点添加/删除、巡航控制等功能。
Objective-C
id<TYCameraProtocol> impl = [[TuyaSmartBizCore sharedInstance] serviceOfProtocol:@protocol(TYCameraProtocol)];
UIViewController *vc = [impl viewControllerWithDeviceId:self.deviceModel.devId uiName:self.device.uiName];
[self.navigationController pushViewController:vc animated:YES];
Swift
let impl = TuyaSmartBizCore.sharedInstance().service(of: TYCameraProtocol.self) as? TYCameraProtocol
impl?.viewControllerWithDeviceId(withDeviceId: deviceModel.devId!, uiName: deviceModel.uiName)
涂鸦 iOS IPC RN 业务包( TuyaSmartCameraRNPanelBizBundle )是基于 智能生活 App SDK 开发的一系列摄像机功能相关的面板 SDK。
业务包主要包括以下功能:
在 Podfile
文件中加入以下代码:
source "https://github.com/TuyaInc/TuyaPublicSpecs.git"
source 'https://cdn.cocoapods.org/'
target 'your_target_name' do
# 添加面板控制业务包
pod 'TuyaSmartPanelBizBundle'
# 添加摄像机面板业务包,接入 RN 页面业务包的同时,也接入该业务包,使得原生相册等功能也可以正常使用。
pod 'TuyaSmartCameraPanelBizBundle'
# 添加摄像机 RN 面板业务包
pod 'TuyaSmartCameraRNPanelBizBundle'
end
然后在项目根目录下执行 pod update
命令,通过 CocoaPods 集成第三方库。CocoaPods 的使用请参考 CocoaPods Guides。
在工程的 info.plist
文件中添加需要的权限声明。
业务包中封装了一系列 RN(React Native)接口供面板调用,其中会涉及到部分苹果隐私权限的声明。
NSPhotoLibraryAddUsageDescription
NSMicrophoneUsageDescription
使用涂鸦 iOS IPC RN 预览面板前,需要集成设备控制业务包,详情请参考 设备面板。
业务包实现 TYPanelProtocol
协议以提供服务。在 TYModuleServices
组件中 TYPanelProtocol.h
协议文件内容包括:
#import <UIKit/UIKit.h>
@protocol TYPanelProtocol <NSObject>
/**
* 获取设备面板控制器
* @param deviceModel 设备模型
* @param initialProps 自定义初始化参数,会以 'extraInfo' 为 key 设置进 RN 应用的 initialProps 中
* @param contextProps 自定义面板上下文,会以 'extraInfo' 为 key 设置进 Panel Context 中
* @param completionHandler 回调返回视图控制器
*/
- (void)getPanelViewControllerWithDeviceModel:(TuyaSmartDeviceModel *)deviceModel
initialProps:(nullable NSDictionary *)initialProps
contextProps:(nullable NSDictionary *)contextProps
completionHandler:(void (^ _Nullable)(__kindof UIViewController * _Nullable panelViewController, NSError * _Nullable error))completionHandler;
@end
业务包主要会依赖如下几个协议:TYSmartHomeDataProtocol
、 TYOTAGeneralProtocol
。
TYSmartHomeDataProtocol:提供加载设备面板所需的当前家庭信息,为 必须实现 的协议。
/**
获取当前的家庭,当前没有家庭的时候,返回 nil。
@return TuyaSmartHome
*/
- (TuyaSmartHome *)getCurrentHome;
TYOTAGeneralProtocol:进入设备面板时,提供检查设备固件更新的事件。实现如下方法用于检查固件升级:
/**
检查设备固件更新,如果有更新会显示展示出固件更新提示
@param deviceModel 需要检查固件升级的设备
@param isManual 是否手动检测升级
@param theme 主题色
YES: 手动检测升级,检测时弹出 loading 框。当有固件新版本时(检测升级、强制升级、提醒升级),显示 OTA VC。
NO: 自动检测升级,检测时不弹出 loading 框。当有强制升级时、提醒升级时,弹出固件升级提示,点确定后显示 OTA VC。
*/
- (void)checkFirmwareUpgrade:(TuyaSmartDeviceModel *)deviceModel isManual:(BOOL)isManual theme:(TYOTAControllerTheme)theme;
TYSmartHomeDataProtocol
中的协议方法getCurrentHome
。TuyaSmartCameraPanelBizBundle
业务包。因为例如摄像机相册面板等的相关功能代码在该业务包中。Objective-C
#import <TuyaSmartBizCore/TuyaSmartBizCore.h>
#import <TYModuleServices/TYSmartHomeDataProtocol.h>
- (void)initCurrentHome {
// 注册要实现的协议
[[TuyaSmartBizCore sharedInstance] registerService:@protocol(TYSmartHomeDataProtocol) withInstance:self];
}
// 实现对应的协议方法
- (TuyaSmartHome *)getCurrentHome {
TuyaSmartHome *home = [TuyaSmartHome homeWithHomeId:@"当前家庭 id"];
return home;
}
Swift
import TuyaSmartDeviceKit
class TYActivatorTest: NSObject,TYSmartHomeDataProtocol{
func test() {
TuyaSmartBizCore.sharedInstance().registerService(TYSmartHomeDataProtocol.self, withInstance: self)
}
func getCurrentHome() -> TuyaSmartHome! {
let home = TuyaSmartHome.init(homeId: 111)
return home
}
}
摄像机 RN 预览面板包括视频实时预览、清晰度切换、声音开关控制、截图、录制、对讲等功能。
Objective-C
id<TYPanelProtocol> impl = [[TuyaSmartBizCore sharedInstance] serviceOfProtocol:@protocol(TYPanelProtocol)];
// 获取面板视图控制器,自行跳转
if (deviceModel) {
[impl getPanelViewControllerWithDeviceModel:deviceModel initialProps:nil contextProps:nil completionHandler:^(__kindof UIViewController * _Nullable panelViewController, NSError * _Nullable error) {
}];
}
Swift
let impl = TuyaSmartBizCore.sharedInstance().service(of: TYPanelProtocol.self) as? TYPanelProtocol
// 获取面板视图控制器,自行跳转
impl?.getPanelViewController(with: deviceModel, initialProps: nil, contextProps: nil, completionHandler: { (vc, err) in
})
涂鸦智能 iOS IPC 设置业务包 (TuyaSmartCameraSettingBizBundle) 是基于 智能生活 App SDK 开发的一系列摄像机常用设置等相关的面板。
业务包主要包括以下功能:
在 Podfile
文件中加入以下代码:
source "https://github.com/TuyaInc/TuyaPublicSpecs.git"
source 'https://cdn.cocoapods.org/'
target 'your_target_name' do
# 添加摄像机设置面板业务包
pod 'TuyaSmartCameraSettingBizBundle'
end
然后在项目根目录下执行 pod update
命令,通过 CocoaPods 集成第三方库。CocoaPods 的使用请参考 CocoaPods Guides。
摄像机设置业务包实现 TYCameraSettingProtocol
协议以提供服务。在 TYModuleServices
组件中查看 TYCameraSettingProtocol.h
协议文件内容为:
#import <UIKit/UIKit.h>
@protocol TYCameraSettingProtocol <NSObject>
/**
Generate settingViewController
获取摄像头设置面板
@param params 摄像头设置页面相关的参数(例如:设置首页为 @{@"devId" : 设备 devID, @"cameraSettingPanelIdentifier" : @"cameraSettingIndexIdentifier"} )
*/
- (UIViewController *)settingViewControllerWithDeviceParams:(NSDictionary *)params;
/**
Generate config item
生成自定义配置
@param tag see developer doc identifiers.
@param visible whether is visible or not
@param callBack you can custom jump action
*/
- (id)generateSettingCustomModelWithTag:(NSString *)tag visible:(BOOL)visible callBack:(void(^_Nullable)(void))callBack;
/**
Config custom setting action and display
配置设置项是否可见及设置项跳转
@param items custom items, generated by generateSettingCustomModelWithTag:visible:callBack:
*/
- (void)configCustomItemWithItems:(NSArray<id>*)items;
@end
deviceModel.category
为 sp
类型的设备。TYCameraSettingProtocol
的协议方法,只有在需要实现自定义摄像机设置面板(返回自定义的摄像机设置面板)的情况下,才需要自己去注册和实现。默认情况下,TuyaSmartCameraSettingBizBundle
业务包内部会有对应的实现逻辑。
Objective-C
[[TuyaSmartBizCore sharedInstance] registerService:@protocol(TYCameraSettingProtocol) withInstance:self];
Swift
TuyaSmartBizCore.sharedInstance().registerService(TYCameraSettingProtocol.self, withInstance: self)
支持自定义配置设置页面上每项功能的显示、隐藏、点击事件拦截,相关接口定义在 TYCameraSettingProtocol
中。
接口说明
/**
Generate config item
生成自定义配置
@param tag see developer doc identifiers.
@param visible whether is visible or not
@param callBack you can custom jump action
*/
- (id)generateSettingCustomModelWithTag:(NSString *)tag visible:(BOOL)visible callBack:(void(^_Nullable)(void))callBack;
参数说明
参数 | 说明 |
---|---|
visible | 是否显示。
|
callBack | 点击事件拦截的回调,可自定义跳转事件 |
tag | 功能项的标识符,取值见下文表格 |
tag
名称说明
tag 名称 | 功能 |
---|---|
cameraSetting_iconInfoItem | 设备图标、名称等信息 |
cameraSetting_infoItem | 设备信息 |
cameraSetting_autoItem | 一键执行和自动化 |
cameraSetting_networkItem | 设备网络信息 |
cameraSetting_thirdPartyItem | 支持的第三方服务 |
cameraSetting_privateModeCfgItem | 隐私模式开关 |
cameraSetting_basicSectionHeaderCfgItem | 基础设置标题 |
cameraSetting_basicFuncCfgItem | 基础设置 |
cameraSetting_nightvisionCfgItem | 夜视模式 |
cameraSetting_irNightCfgItem | 红外夜视功能 |
cameraSetting_displaySettingCfgItem | 画面调节 |
cameraSetting_soundCfgItem | 声音调节 |
cameraSetting_workModeCfgItem | 工作模式 |
cameraSetting_advanceSectionHeaderCfgItem | 高级设置标题 |
cameraSetting_detectCfgItem | 侦测报警 |
cameraSetting_pirFuncCfgItem | PIR |
cameraSetting_powerCfgItem | 电源管理 |
cameraSetting_bellCfgItem | 铃铛设置 |
cameraSetting_sirenSettingCfgItem | 蜂鸣器调节 |
cameraSetting_videoLayoutCfgItem | 视频布局 |
cameraSetting_presentPointCfgItem | 预设点设置 |
cameraSetting_onvifCfgItem | onvif |
cameraSetting_gatewaySectionHeaderCfgItem | 网关标题 |
cameraSetting_gatewayCfgItem | 网关 |
cameraSetting_storageSectionHeaderCfgItem | 存储设置标题 |
cameraSetting_storageCfgItem | 存储设置 |
cameraSetting_valueAddedSectionHeaderCfgItem | 增值服务标题 |
cameraSetting_valueAddedCfgItem | 增值服务 |
cameraSetting_offlineSectionHeaderCfgItem | 离线提醒标题 |
cameraSetting_offlineCfgItem | 离线提醒 |
cameraSetting_otherSectionHeaderCfgItem | 其他标题 |
cameraSetting_feedbackCfgItem | 常见问题与反馈 |
cameraSetting_shareDeviceCfgItem | 共享设备 |
cameraSetting_firmwareCfgItem | 设备升级 |
cameraSetting_restartCfgItem | 重启设备 |
cameraSetting_removeCfgItem | 移除设备 |
cameraSetting_indicatorLightItem | 状态指示灯 |
cameraSetting_besharedItem | 设备来自 |
cameraSetting_soundDetectedItem | 声音检测 |
cameraSetting_apModeItem | 热点模式 |
cameraSetting_unlockItem | 远程解锁 |
cameraSetting_cloudDisk | 基站云盘页面 |
cameraSetting_privacyZone | 隐私区域设置 |
cameraSetting_recording_time | 单段录影时间设置 |
cameraSetting_parking_mode | 停车模式设置 |
cameraSetting_collision_alert | 碰撞报警 |
cameraSetting_antiDismantle | 防拆告警开关 |
cameraSetting_notification | 消息推送设置 |
cameraSetting_carInspection | 车型检测开关 |
cameraSetting_nonCarInspection | 非机动检测开关 |
cameraSetting_thirdPartyHeaderItem | 支持的第三方标题 |
cameraSetting_pirSetItem | PIR 设置 |
cameraSetting_stationDoorbellItem | 基站门铃设置 |
cameraSetting_stationDetectionItem | 基站侦测报警 |
接口说明
/**
Config custom setting action and display
配置设置项是否可见及设置项跳转
@param items custom items, generated by generateSettingCustomModelWithTag:visible:callBack:
*/
- (void)configCustomItemWithItems:(NSArray<id>*)items;
参数说明
参数 | 说明 |
---|---|
items | 传入数组,数组中的 item 由 generateSettingCustomModelWithTag:visible:callBack: 生成 |
Objective-C
id <TYCameraSettingProtocol> cameraSettingProtocol = [[TuyaSmartBizCore sharedInstance] serviceOfProtocol:@protocol(TYCameraSettingProtocol)];
id item1 = [cameraSettingProtocol generateSettingCustomModelWithTag:@"cameraSetting_infoItem" visible:NO callBack:nil];
id item2 = [cameraSettingProtocol generateSettingCustomModelWithTag:@"cameraSetting_networkItem" visible:NO callBack:nil];
[cameraSettingProtocol configCustomItemWithItems:@[item1, item2]];
Swift
let cameraSettingProtocolImpl = TuyaSmartBizCore.sharedInstance().service(of: TYCameraSettingProtocol.self) as? TYCameraSettingProtocol
if let impl = cameraSettingProtocolImpl {
let item1 = impl.generateSettingCustomModel(withTag: "cameraSetting_infoItem", visible: false, callBack: nil)
let item2 = impl.generateSettingCustomModel(withTag: "cameraSetting_networkItem", visible: false, callBack: nil)
impl.configCustomItem(withItems: [item1!, item2!])
}
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈