更新时间:2023-05-22 06:38:31下载pdf
门铃设备成功绑定到家庭,且保持在线状态时,如果有人按门铃,IPC SDK 将收到门铃呼叫的事件。门铃呼叫相关处理全部通过管理类进行,比如门铃呼叫状态变化监听、接听、挂断、拒绝等操作。
如果想要实现门铃呼叫时显示视频,您需要接入 视频直播。
示例代码
Objective C:
TuyaSmartDoorBellManager *manager = [TuyaSmartDoorBellManager sharedInstance];
Swift:
let manager = TuyaSmartDoorBellManager.sharedInstance()
门铃呼叫使用 TuyaSmartDoorBellCallModel
模型类封装,用来保存门铃呼叫相关信息,以及维护门铃呼叫的当前状态。一次门铃呼叫对应一个 TuyaSmartDoorBellCallModel
模型。唯一标识为 messageId
,即门铃呼叫的消息 ID。
参数 | 描述 |
---|---|
type | 门铃呼叫类型,取值:
|
devId | 设备 ID |
messageId | 门铃呼叫消息的唯一标识 |
time | 门铃呼叫触发的时间点,采用 Unix 时间戳,单位为秒 |
answeredBySelf | 呼叫是否已被自己接听 |
answeredByOther | 呼叫是否已被其他人接听 |
canceled | 呼叫是否已经被取消 |
如果您想知道某个门铃呼叫的状态,可通过 TuyaSmartDoorBellCallModel
模型返回对应的 TuyaSmartDoorBellCallModel
实例来查询。
接口说明
- (TuyaSmartDoorBellCallModel *)callModelWithMessageId:(NSString *)messageId;
参数说明
参数 | 说明 |
---|---|
messageId | 门铃呼叫消息的唯一标识 |
监听生效前提是 App 进程处于活跃状态。当 App 进程进入后台,或者被终止后,该监听无效。
接口说明
- (void)addObserver:(id<TuyaSmartDoorBellObserver>)observer;
参数说明
参数 | 说明 |
---|---|
TuyaSmartDoorBellObserver | 门铃呼叫监听者 |
TuyaSmartDoorBellObserver
门铃呼叫监听者,包含门铃呼叫整个生命周期的回调,详见下表:
接口名 | 参数列表 | 返回值 | 描述 |
---|---|---|---|
didReceivedFromDevice | TuyaSmartDoorBellCallModel, TuyaSmartDeviceModel | void | 收到设备的门铃呼叫事件。 |
doorBellCallDidHangUp | TuyaSmartDoorBellCallModel | void | 设备端挂断了门铃呼叫。 |
doorBellCallDidAnsweredByOther | TuyaSmartDoorBellCallModel | void | 门铃呼叫已经被其他人接听。由业务层去处理是否需要自动取消或者仍然可以接听门铃呼叫:
|
doorBellCallDidAnswered | TuyaSmartDoorBellCallModel | void | 门铃呼叫已被接听。 |
doorBellCallDidCanceled | TuyaSmartDoorBellCallModel, BOOL | void | 门铃呼叫被取消。可以从 isTimeOut 参数判断是超时自动取消,还是设备端主动取消。 |
doorBellCallDidRefuse | TuyaSmartDoorBellCallModel | void | 门铃呼叫已拒绝 |
收到设备的门铃呼叫事件 didReceivedFromDevice
时,建议保存 TuyaSmartDoorBellCallModel
对象,或者其中门铃呼叫唯一标识符 messageId
起来,作为后续接听、挂断、拒绝等方法的请求参数。
示例代码
Objective C:
@interface CameraDoorbellManager ()<TuyaSmartDoorBellObserver>
@property (nonatomic, copy) NSString *messageId;
@end
@implementation CameraDoorbellManager
- (void)doorBellCall:(TuyaSmartDoorBellCallModel *)callModel didReceivedFromDevice:(TuyaSmartDeviceModel *)deviceModel {
self.messageId = callModel.messageId;
}
- (void)doorBellCallDidRefuse:(TuyaSmartDoorBellCallModel *)callModel {
}
- (void)doorBellCallDidHangUp:(TuyaSmartDoorBellCallModel *)callModel {
}
- (void)doorBellCallDidAnsweredByOther:(TuyaSmartDoorBellCallModel *)callModel {
}
- (void)doorBellCallDidAnswered:(TuyaSmartDoorBellCallModel *)callModel {
}
- (void)doorBellCallDidCanceled:(TuyaSmartDoorBellCallModel *)callModel timeOut:(BOOL)isTimeOut {
}
@end
Swift:
class DoorbellManager: NSObject {
let manager = TuyaSmartDoorBellManager.sharedInstance()
var messageId:String = ""
}
extension DoorbellManager:TuyaSmartDoorBellObserver {
func doorBellCall(_ callModel: TuyaSmartDoorBellCallModel!, didReceivedFromDevice deviceModel: TuyaSmartDeviceModel!) {
messageId = callModel.messageId
}
func doorBellCallDidRefuse(_ callModel: TuyaSmartDoorBellCallModel!) {
}
func doorBellCallDidHangUp(_ callModel: TuyaSmartDoorBellCallModel!) {
}
func doorBellCallDidAnswered(byOther callModel: TuyaSmartDoorBellCallModel!) {
}
func doorBellCallDidCanceled(_ callModel: TuyaSmartDoorBellCallModel!, timeOut isTimeOut: Bool) {
}
}
门铃呼叫监听不使用后,请在合适的时机移除。
接口说明
- (void)removeObserver:(id<TuyaSmartDoorBellObserver>)observer;
示例代码
Objective C:
[[TuyaSmartDoorBellManager sharedInstance] removeObserver:self];
Swift:
TuyaSmartDoorBellManager.sharedInstance()?.remove(self)
用户正在接听某个门铃呼叫时,您可以设置是否自动忽略此设备的后续呼叫。
属性说明
@property (nonatomic, assign) BOOL ignoreWhenCalling;
属性 | 说明 |
---|---|
ignoreWhenCalling |
|
设置门铃呼叫超时时间后,用户如果在规定时间内未接听门铃呼叫,会回调 doorBellCallDidCanceled
进行通知,并结束此次门铃呼叫。
属性说明
@property (nonatomic, assign) NSInteger doorbellRingTimeOut;
属性 | 说明 |
---|---|
doorbellRingTimeOut | 门铃呼叫超时时间,单位为秒,默认值为 25 |
收到门铃呼叫之后,可接听门铃。但是呼叫可能因为已经被接听、取消或者别的原因而导致无法成功接听。如果接听失败,失败原因会以返回值错误码的形式告知,详情请参考下文 错误码。
接口说明
- (TYDoorBellError)answerDoorBellCall:(NSString *)messageId;
示例代码
Objective C:
[[TuyaSmartDoorBellManager sharedInstance] answerDoorBellCall:self.messageId];
Swift:
TuyaSmartDoorBellManager.sharedInstance()?.answerDoorBellCall(messageId)
收到门铃呼叫之后,用户可直接拒绝接听门铃。
接口说明
- (void)refuseDoorBellCall:(NSString *)messageId;
示例代码
Objective C:
[[TuyaSmartDoorBellManager sharedInstance] refuseDoorBellCall:self.messageId];
Swift:
TuyaSmartDoorBellManager.sharedInstance()?.refuseDoorBellCall(messageId)
门铃呼叫接听后,可挂断接听。挂断接听可能由于呼叫未被接听等原因而失败,失败原因会以返回值错误码的形式告知,详情请参考下文 错误码。
接口说明
- (TYDoorBellError)hangupDoorBellCall:(NSString *)messageId;
示例代码
Objective C:
[[TuyaSmartDoorBellManager sharedInstance] hangupDoorBellCall:self.messageId];
Swift:
TuyaSmartDoorBellManager.sharedInstance()?.hangupDoorBellCall(messageId)
门铃呼叫除了通过 MQTT 协议消息通知客户端,还可能通过消息推送进行通知。您可以根据外部传入参数来生成门铃呼叫模型,达到管理后续门铃接听、挂断、拒绝的操作。
接口说明
- (void)generateCall:(NSDictionary *)params;
参数说明
参数 | 说明 |
---|---|
params | 收到的呼叫消息数据 |
错误码 | 说明 |
---|---|
0 | 操作成功,无错误 |
-1001 | 门铃呼叫时已经被其他用户接听 |
-1002 | 设备端已经取消了门铃呼叫 |
-1003 | 门铃呼叫已经超时 |
-1004 | 门铃呼叫已经被接听过 |
-1005 | 调用挂断呼叫接口,但门铃呼叫还没有被接听 |
-1006 | 不支持此类型设备,例如 doorbell 类型设备 |
-1007 | 参数无效 |
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈