多控关联 UI 业务包

更新时间:2023-03-09 08:04:36

多控关联 UI 业务包的业务功能包括涂鸦多控关联模块的 关联多控设备 的业务逻辑及 UI 界面。

功能说明

设备多控关联是指设备的某个 DP 与另一个设备的某个 DP 之间建立关联,生成一个多控组。当控制多控组内某个建立 DP 关联的设备,组内其他设备关联的 DP 状态同步。

例如,三个二路 Zigbee 子设备开关,每个开关的第一个 DP 与另外两个开关的第一个 DP 建立多控组,当控制其中一个开关的第一个 DP 状态为关闭状态,另外两个开关的第一个 DP 同步关闭。

目前支持多控关联的设备有:

  • Zigbee 子设备的开关
  • Wi-Fi 设备的开关

接入组件

在工程的 Podfile 文件中添加多控关联业务包组件,并执行 pod update 命令:

source 'https://github.com/tuya/tuya-pod-specs.git'
source 'https://cdn.cocoapods.org/'
platform :ios, '11.0'

target 'your_target_name' do
  # 添加多控关联业务包
  pod 'TuyaSmartDeviceSyncBizBundle'
end

服务协议

调用业务包前,您需要先查询对应的执行设备 ID。

多控关联业务包实现 TYDeviceSyncProtocol.h 协议以提供对外服务。您可以在 TYModuleServices 组件中查看 TYDeviceSyncProtocol.h,协议文件内容为:

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@protocol TYDeviceSyncProtocol <NSObject>

typedef NS_ENUM(NSInteger, TYDeviceSyncControlState) {
    TYDeviceSyncControlStateNone = 0,          // 设备Bean不存在
    TYDeviceSyncControlStateSupport,           // 支持多控关联
    TYDeviceSyncControlStateNotSupport,        // 不支持多控关联
};

/**
 跳转到多控关联设备关联页面
 @param devId 主设备的设备ID
 @result TYDeviceSyncControlState 主设备的多控关联状态
 */
- (TYDeviceSyncControlState)gotoMultiControl:(NSString *)devId;

/**
 判断当前主设备是否支持多控关联
 @param devId 主设备的设备ID
 @result BOOL 主设备是否支持多控关联
 */
- (BOOL)isSupportMultiControl:(NSString *)devId;

@end

NS_ASSUME_NONNULL_END

判断设备是否支持多控关联

Objective-C 示例

#import <TuyaSmartBizCore/TuyaSmartBizCore.h>
#import <TYModuleServices/TYDeviceSyncProtocol.h>

// 实现对应的协议方法
- (void)isSupportMultiControl {
  NSString *deviceId = @"deviceId";

  id<TYDeviceSyncProtocol> impl = [[TuyaSmartBizCore sharedInstance] serviceOfProtocol:@protocol(TYDeviceSyncProtocol)];
  BOOL isSupport = [impl isSupportMultiControl:deviceId];
}

Swift 示例

let impl = TuyaSmartBizCore.sharedInstance().service(of:TYDeviceSyncProtocol.self) as?TYDeviceSyncProtocol
impl?.isSupportMultiControl(devId: @"deviceId")

进入多控关联页面

Objective-C 示例

#import <TuyaSmartBizCore/TuyaSmartBizCore.h>
#import <TYModuleServices/TYDeviceSyncProtocol.h>

// 实现对应的协议方法
- (void)gotoMultiControl {
  NSString *deviceId = @"deviceId";

  id<TYDeviceSyncProtocol> impl = [[TuyaSmartBizCore sharedInstance] serviceOfProtocol:@protocol(TYDeviceSyncProtocol)];
  TYDeviceSyncControlState state = [impl gotoMultiControl:deviceId];
}

Swift 示例

let impl = TuyaSmartBizCore.sharedInstance().service(of:TYDeviceSyncProtocol.self) as?TYDeviceSyncProtocol
impl?.gotoMultiControl(devId: @"deviceId")