子设备替换

更新时间:2025-11-07 09:48:00下载pdf

用途

用于替换故障的子设备。

接入

业务包版本要在 v6.11.0 以上。

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

target 'Your_Project_Name' do
    pod "ThingSmartBusinessExtensionKit"
end

API 说明

模型

子设备替换管理类

open class ThingSubDeviceReplaceManager : NSObject {
    ....
}

子设备替换的角色

public enum ThingSubDeviceReplaceRole : UInt, @unchecked Sendable {
    case replacer = 0 // 作为替换者进行工作,则通常意味着这是一个无故障的设备
    case replacee = 1 // 作为被替换者进行工作,则通常意味着这是一个故障的设备
}

子设备替换结果

public enum ThingSubDeviceReplaceStatus : Int, @unchecked Sendable {
    case replaceFailure = -1
    case replacing = 0
    case replaceSuccess = 1
}
open class ThingSubDeviceReplaceResult : NSObject {
    open var status: ThingSubDeviceReplaceStatus
    open var failReason: String
}

子设备替换回调事件

public protocol ThingSubDeviceReplaceManagerListener : NSObjectProtocol {
    func manager(_ manager: ThingSubDeviceReplaceManager, replaceDidCompleteWithResult success: Bool, error: (any Error)?)
}

子设备替换管理类接口

  • 初始化子设备替换管理类

    public init(deviceId: String, role: ThingSubDeviceReplaceRole)
    

    role 通常根据入口设备是否有故障而决定。如果入口设备没有故障,则其通常用来替换其他设备,role 通常为 replacer;相反,如果入口设备有故障设备,则其通常被别的设备替换,role 通常为 replacee

    入参 类型 说明
    deviceId String 入口设备 ID
    role ThingSubDeviceReplaceRole 设备角色
  • 判断设备是否支持子设备替换

    open func supportReplace(success: @escaping (Bool) -> Void, failure: @escaping (any Error) -> Void)
    
    入参 类型 说明
    success Bool 成功回调。true 表示支持,false 表示不支持
    failure error 错误信息
  • 获取兼容的子设备列表

    open func getCompatibleSubDevices(success: @escaping ([String]) -> Void, failure: @escaping (any Error) -> Void)
    
    入参 类型 说明
    success [String] 成功回调,子设备 ID 列表
    failure error 错误信息
  • 进行子设备替换

    open func replace(withOtherDevice deviceId: String, timeout: Int, success: @escaping (String) -> Void, failure: @escaping (any Error) -> Void)
    

    如果 rolereplacer,则此设备将会被入口设备替换。相反,如果 rolereplacee,则此设备将会替换入口设备。

    入参 类型 说明
    deviceId String 用来替换的子设备 ID
    timeout Int 超时时间,单位。最少 30 秒,如果小于 30 秒则默认 30 秒
    success string 替换 ID
    failure error 错误信息
  • 获取替换结果

    open func replaceResult(withReplaceId replaceId: String, success: @escaping (ThingSubDeviceReplaceResult) -> Void, failure: @escaping (any Error) -> Void)
    

    通常不会用到此方法,通过 addListener 即可监听到结果事件。当网络异常导致 mq 消息丢失、listener 不回调时,可以通过此方法进行获取。

    入参 类型 说明
    replaceId String 替换 ID
    success ThingSubDeviceReplaceResult 替换结果
    failure error 错误信息
  • 添加替换结果监听

    open func add(_ listener: any ThingSubDeviceReplaceManagerListener)
    
    入参 类型 说明
    listener ThingSubDeviceReplaceManagerListener 监听器
  • 移除替换结果监听

    open func remove(_ listener: any ThingSubDeviceReplaceManagerListener)
    
    入参 类型 说明
    listener ThingSubDeviceReplaceManagerListener 监听器

使用示例

业务层SDK判断设备是否支持子设备替换是否支持获取兼容子设备列表子设备列表选择替换的设备par[兼容子设备]替换子设备替换结果par[子设备替换逻辑]alt[支持]业务层SDK

Demo

更多信息,请参考 Demo