1. 摄像机 Native 面板业务包
1.1. 功能概述
涂鸦智能 iOS IPC 业务包 (TuyaSmartCameraPanelBizBundle) 是基于 Tuya Smart Camera SDK 开发的一系列摄像机功能相关的面板 SDK。主要包括以下功能:
- 预览面板,回放面板,云存储面板,消息中心面板,相册面板,设置面板。
1.2. 接入组件
在 Podfile
文件中加入以下代码:
source "https://github.com/TuyaInc/TuyaPublicSpecs.git"
source 'https://cdn.cocoapods.org/'
target 'your_target_name' do
# 添加摄像机面板业务包
pod 'TuyaSmartCameraPanelBizBundle'
end
然后在项目根目录下执行 pod update
命令,集成第三方库。
CocoaPods 的使用请参考:CocoaPods Guides
注意
设备控制业务包中封装了一系列 RN 接口供面板调用,其中会涉及到部分苹果隐私权限的声明。
- 如果接入的设备面板有使用相册相关的(例如:相册),则需要在工程的
info.plist
中添加如下权限声明:
NSPhotoLibraryAddUsageDescription
- 如果接入的设备面板有使用到麦克风(例如:摄像机对讲),则需要在工程的
info.plist
中添加如下权限声明:
NSMicrophoneUsageDescription
1.3. 服务协议
摄像机业务包实现 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
1.3.1. 依赖服务
设备控制业务包主要功能为加载设备,针对不同设备会有不同的一些功能,为保证这些功能正常运行,会依赖如下几个协议: 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;
1.4. 使用指南
1.4.1. 注意事项
- 使用任何接口之前,务必确认该设备在当前用户下。
- 此接口,只适用于摄像机设备调用,即 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
}
}
1.4.2.
1.4.3. 获取预览面板 (UIViewController)
摄像机原生预览面板,包括视频实时预览,清晰度切换,声音开关控制,截图,录制,对讲等功能,移动侦测,PTZ 方向控制,收藏点添加/删除,巡航控制等。
Objc
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)
2. 摄像机 RN 面板业务包
2.1. 功能概述
涂鸦智能 iOS IPC RN 业务包( TuyaSmartCameraRNPanelBizBundle )是基于 Tuya Smart Camera SDK 开发的一系列摄像机功能相关的面板 SDK。主要包括以下功能:
- 预览面板,回放面板,云存储面板,消息中心面板,相册面板,设置面板。
2.2. 接入组件
在 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 Guides
注意
设备控制业务包中封装了一系列 RN 接口供面板调用,其中会涉及到部分苹果隐私权限的声明。
- 如果接入的设备面板有使用相册相关的(例如:相册),则需要在工程的
info.plist
中添加如下权限声明:
NSPhotoLibraryAddUsageDescription
- 如果接入的设备面板有使用到麦克风(例如:摄像机对讲),则需要在工程的
info.plist
中添加如下权限声明:
NSMicrophoneUsageDescription
2.3. 服务协议
摄像机业务包实现 TYRNCameraProtocol
协议以提供服务,在 TYModuleServices
组件中查看 TYRNCameraProtocol.h
协议文件内容为:
#import <UIKit/UIKit.h>
@protocol TYRNCameraProtocol <NSObject>
/**
获取摄像头RN面板
@param devId 摄像头设备的devId
*/
- (UIViewController *)cameraRNPanelViewControllerWithDeviceId:(NSString *)devId;
@end
2.3.1. 依赖服务
设备控制业务包主要功能为加载设备,针对不同设备会有不同的一些功能,为保证这些功能正常运行,会依赖如下几个协议: 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;
2.4. 使用指南
2.4.1. 注意事项
- 使用任何接口之前,务必确认该设备在当前用户下。
- 此接口,只适用于摄像机设备调用,即 deviceModel.category 为 “sp” 类型的设备。
- 调用业务包逻辑前,要先实现
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
}
}
2.4.2. 注册 TYRNCameraProtocol 协议
注意
TYRNCameraProtocol
的协议方法,只有在需要实现自定义摄像机RN面板(返回自定义的摄像机面板)的情况下,才需要自己去注册和实现,默认 TuyaSmartPanelBizBundle
业务包内部会有对应的实现逻辑。
Objc
[[TuyaSmartBizCore sharedInstance] registerService:@protocol(TYRNCameraProtocol) withInstance:self];
Swift
TuyaSmartBizCore.sharedInstance().registerService(TYRNCameraProtocol.self, withInstance: self)
2.4.3. 获取预览面板 (UIViewController)
摄像机RN预览面板,包括视频实时预览,清晰度切换,声音开关控制,截图,录制,对讲等功能。
Objc
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!)