多控关联 UI 业务包

更新时间:2023-03-09 08:01:17LLM 副本以 Markdown 格式查看

多控关联 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")