1. TuyaSmart iOS IPC biz Bundle
1.1. Functional Overview
TuyaSmart iOS IPC biz Bundle is a series of panel SDK related to camera functions developed based on Tuya Smart Camera SDK. It mainly includes the following functions:
-Preview panel, playback panel, cloud storage panel, message center panel, album panel, settings panel.
1.2. Integrate
Add the following code to the Podfile
file:
source "https://github.com/TuyaInc/TuyaPublicSpecs.git"
source 'https://cdn.cocoapods.org/'
target 'your_target_name' do
# add cameraBizBundle
pod 'TuyaSmartCameraPanelBizBundle'
end
Then execute the pod update
command in the project root directory to integrate third-party libraries.
Please refer to the use of CocoaPods: CocoaPods Guides
Note
The BizBundle encapsulates a series of RN interfaces for the panel to call, which will involve some of Apple's privacy rights statements.
- If the connected device panel is related to the use of photo albums (for example: albums), you need to add the following permission statement in the project's
info.plist
:
NSPhotoLibraryAddUsageDescription
- If the connected device panel uses a microphone (for example: camera talk), you need to add the following permission statement in the project's
info.plist
:
NSMicrophoneUsageDescription
1.3. Service Protocol
1.3.1. Provide Service
BizBundle provide services of TYCameraProtocol.h
in TYModuleServices
component as follows:
#import <UIKit/UIKit.h>
@class TuyaSmartDeviceModel;
@protocol TYCameraProtocol <NSObject>
/**
* jump to device camera Native panel
*
* @param deviceId DeviceModel.devId
* @param uiName DeviceModel.uiName
*/
- (UIViewController *)viewControllerWithDeviceId:(NSString *)devId uiName:(NSString *)uiName;
@optional
/**
jump to device camera playback panel
@param deviceModel DeviceModel
*/
- (void)deviceGotoCameraNewPlayBackPanel:(TuyaSmartDeviceModel *)deviceModel;
/**
jump to device camera CloudStorage panel
@param deviceModel DeviceModel
*/
- (void)deviceGotoCameraCloudStoragePanel:(TuyaSmartDeviceModel *)deviceModel;
/**
jump to device camera CameraMessageCenter panel
@param deviceModel DeviceModel
*/
- (void)deviceGotoCameraMessageCenterPanel:(TuyaSmartDeviceModel *)deviceModel;
/**
jump to device camera PhotoLibrary panel
@param deviceModel DeviceModel
*/
- (void)deviceGotoPhotoLibrary:(TuyaSmartDeviceModel *)deviceModel;
@end
1.3.2. Dependent Services
The main function of the biz bundle is to load the device, and there will be different functions for different devices. To ensure the normal operation of these functions, it will rely on the following protocols: TYSmartHomeDataProtocol
、 TYOTAGeneralProtocol
。
TYSmartHomeDataProtocol
Provide the current family information required to load the device panel, must be implemented
/**
Get the current family. If there is no family, return nil.
@return TuyaSmartHome
*/
- (TuyaSmartHome *)getCurrentHome;
TYOTAGeneralProtocol
When entering the device panel, provide an event to check the device firmware update. Implement the following method to check the firmware upgrade:
/**
Check the device firmware update, if there is an update, it will display the firmware update prompt
@param deviceModel DeviceModel
@param isManual Whether to manually detect the upgrade
@param theme theme color
*/
- (void)checkFirmwareUpgrade:(TuyaSmartDeviceModel *)deviceModel isManual:(BOOL)isManual theme:(TYOTAControllerTheme)theme;
1.4. Guidance
1.4.1. Attention
- Make sure that the user is logged in before using any interface.
- This interface is only fit for camera device, which device.deviceModel.category is 'sp'.
- Before using bizbundle,must implement the protocol method
getCurrentHome
inTYSmartHomeDataProtocol
. - This business package is mutually exclusive with the previous TuyaSmartCameraPanelSDK. The two cannot coexist. Please check the Migration Guide.
Objective-C
#import <TuyaSmartBizCore/TuyaSmartBizCore.h>
#import <TYModuleServices/TYSmartHomeDataProtocol.h>
- (void)initCurrentHome {
// register service
[[TuyaSmartBizCore sharedInstance] registerService:@protocol(TYSmartHomeDataProtocol) withInstance:self];
}
// implementation
- (TuyaSmartHome *)getCurrentHome {
TuyaSmartHome *home = [TuyaSmartHome homeWithHomeId:@"current hid"];
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. Obtain Preview Panel (UIViewController)
Camera native preview panel, including real-time video preview, sharpness switch, sound switch control, screenshot, recording, intercom and other functions, motion detection, PTZ direction control, favorite point addition / deletion, cruise control, etc.
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. TuyaSmart iOS IPC ReactNative biz Bundle
2.1. Functional Overview
TuyaSmart iOS IPC ReactNatice biz Bundle is a series of panel SDK related to camera functions developed based on Tuya Smart Camera SDK. It mainly includes the following functions:
-Preview panel, playback panel, cloud storage panel, message center panel, album panel, settings panel.
2.2. Integrate
Add the following code to the Podfile
file:
source "https://github.com/TuyaInc/TuyaPublicSpecs.git"
source 'https://cdn.cocoapods.org/'
target 'your_target_name' do
# Adding the camera panel service pack Connecting to the RN page bread also connects to this service pack, so that native albums and other functions can also be used.
pod 'TuyaSmartCameraPanelBizBundle'
# add cameraRNPanelBizBundle
pod 'TuyaSmartCameraRNPanelBizBundle'
end
Then execute the pod update
command in the project root directory to integrate third-party libraries.
Please refer to the use of CocoaPods: CocoaPods Guides
Note
The BizBundle encapsulates a series of RN interfaces for the panel to call, which will involve some of Apple's privacy rights statements.
- If the connected device panel is related to the use of photo albums (for example: albums), you need to add the following permission statement in the project's
info.plist
:
NSPhotoLibraryAddUsageDescription
- If the connected device panel uses a microphone (for example: camera talk), you need to add the following permission statement in the project's
info.plist
:
NSMicrophoneUsageDescription
2.3. Service Protocol
2.3.1. Provide Service
BizBundle provide services of TYRNCameraProtocol.h
in TYModuleServices
component as follows:
#import <UIKit/UIKit.h>
@protocol TYRNCameraProtocol <NSObject>
/**
obtain camera RN Panel
@param devId deviceModel.devId
*/
- (UIViewController *)cameraRNPanelViewControllerWithDeviceId:(NSString *)devId;
@end
2.3.2. Dependent Services
The main function of the biz bundle is to load the device, and there will be different functions for different devices. To ensure the normal operation of these functions, it will rely on the following protocols: TYSmartHomeDataProtocol
、 TYOTAGeneralProtocol
。
TYSmartHomeDataProtocol
Provide the current family information required to load the device panel, must be implemented
/**
Get the current family. If there is no family, return nil.
@return TuyaSmartHome
*/
- (TuyaSmartHome *)getCurrentHome;
TYOTAGeneralProtocol
When entering the device panel, provide an event to check the device firmware update. Implement the following method to check the firmware upgrade:
/**
Check the device firmware update, if there is an update, it will display the firmware update prompt
@param deviceModel DeviceModel
@param isManual Whether to manually detect the upgrade
@param theme theme color
*/
- (void)checkFirmwareUpgrade:(TuyaSmartDeviceModel *)deviceModel isManual:(BOOL)isManual theme:(TYOTAControllerTheme)theme;
2.4. Guidance
2.4.1. Attention
- Make sure that the user is logged in before using any interface.
- This interface is only fit for camera device, which device.deviceModel.category is 'sp'.
- Before using bizbundle,must implement the protocol method
getCurrentHome
inTYSmartHomeDataProtocol
. - After accessing this service pack, you must also access the
TuyaSmartCameraPanelBizBundle
service pack, because some related function codes (such as camera album panel codes, etc.) are included in this service pack.
Objective-C
#import <TuyaSmartBizCore/TuyaSmartBizCore.h>
#import <TYModuleServices/TYSmartHomeDataProtocol.h>
- (void)initCurrentHome {
// register service
[[TuyaSmartBizCore sharedInstance] registerService:@protocol(TYSmartHomeDataProtocol) withInstance:self];
}
// implementation
- (TuyaSmartHome *)getCurrentHome {
TuyaSmartHome *home = [TuyaSmartHome homeWithHomeId:@"current home 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. register TYRNCameraProtocol protocol
Note
The protocol method of TYRNCameraProtocol
only needs to be registered and implemented by yourself if you need to implement a custom camera RN panel (to return to a custom camera panel), the default TuyaSmartPanelBizBundle
service pack has the corresponding implementation logic.
Objc
[[TuyaSmartBizCore sharedInstance] registerService:@protocol(TYRNCameraProtocol) withInstance:self];
Swift
TuyaSmartBizCore.sharedInstance().registerService(TYRNCameraProtocol.self, withInstance: self)
2.4.3. Obtain Preview Panel (UIViewController)
Camera react-native preview panel, including real-time video preview, sharpness switch, sound switch control, screenshot, recording, intercom and other functions, motion detection, PTZ direction control, favorite point addition / deletion, cruise control, etc.
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!)