更新时间:2023-05-22 06:38:29下载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/tuya/tuya-private-specs.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
业务包实现 TYRNCameraProtocol
协议以提供服务。在 TYModuleServices
组件中查看 TYRNCameraProtocol.h
协议文件内容为:
#import <UIKit/UIKit.h>
@protocol TYRNCameraProtocol <NSObject>
/**
获取摄像头 RN 面板
@param devId 摄像头设备的 devId
*/
- (UIViewController *)cameraRNPanelViewControllerWithDeviceId:(NSString *)devId;
@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
}
}
TYRNCameraProtocol
的协议方法,只有在需要实现自定义摄像机 RN 面板(返回自定义的摄像机面板)的情况下,才需要自己去注册和实现,默认 TuyaSmartPanelBizBundle
业务包内部会有对应的实现逻辑。
Objective-C
[[TuyaSmartBizCore sharedInstance] registerService:@protocol(TYRNCameraProtocol) withInstance:self];
Swift
TuyaSmartBizCore.sharedInstance().registerService(TYRNCameraProtocol.self, withInstance: self)
摄像机 RN 预览面板包括视频实时预览、清晰度切换、声音开关控制、截图、录制、对讲等功能。
Objective-C
id<TYRNCameraProtocol> impl = [[TuyaSmartBizCore sharedInstance] serviceOfProtocol:@protocol(TYRNCameraProtocol)];
UIViewController *vc = [impl cameraRNPanelViewControllerWithDeviceId:self.deviceModel.devId];
[self.navigationController pushViewController:vc animated:YES];
Swift
let impl = TuyaSmartBizCore.sharedInstance().service(of: TYRNCameraProtocol.self) as? TYRNCameraProtocol
impl?.cameraRNPanelViewControllerWithDeviceId(withDeviceId: deviceModel.devId!)
涂鸦智能 iOS IPC 设置业务包 (TuyaSmartCameraSettingBizBundle) 是基于 智能生活 App SDK 开发的一系列摄像机常用设置等相关的面板。
业务包主要包括以下功能:
在 Podfile
文件中加入以下代码:
source "https://github.com/tuya/tuya-private-specs.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!])
}
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈