更新时间:2024-08-23 09:47:59下载pdf
智能生活业务拓展 SDK 是基于家庭维度进行开发的,智能设备的添加、编辑、移除、状态变化的监听都是基于当前家庭。用户登录后,可以在账号下创建任意多个家庭,并对单个家庭进行管理,包括创建房间、新增成员等。
登录成功后,跳转到 App 首页,单击 Home Management-Business Extension SDK 进入家庭管理页面,展示当前家庭。
if let home = ThingSmartFamilyBiz.sharedInstance().getCurrentFamily() {
currentHomeName.text = home.name
} else {
currentHomeName.text = "No Selection"
}
如果账号下没有任何家庭,可以使用 ThingSmartFamilyBiz
来创建和管理家庭。创建家庭时名称是必须的,家庭位置和家庭下房间可以稍后再设置。
let requestModel = ThingSmartFamilyRequestModel()
requestModel.name = homeName
requestModel.geoName = geoName
requestModel.latitude = latitude
requestModel.longitude = longitude
ThingSmartFamilyBiz.sharedInstance().addFamily(with: requestModel) {[weak self] homeId in
guard let self = self else { return }
let action = UIAlertAction(title: NSLocalizedString("OK", comment: ""), style: .default) { [weak self] _ in
guard let self = self else { return }
self.navigationController?.popViewController(animated: true)
}
Alert.showBasicAlert(on: self, with: NSLocalizedString("Success", comment: ""), message: NSLocalizedString("Successfully added new home.", comment: ""), actions: [action])
} failure: {[weak self] error in
guard let self = self else { return }
let errorMessage = error?.localizedDescription ?? ""
Alert.showBasicAlert(on: self, with: NSLocalizedString("Failed to Add New Home", comment: ""), message: errorMessage)
}
获取当前账号下所有家庭。
accept
为已加入的家庭pending
为待加入的家庭reject
为拒绝加入的家庭删除家庭应从已加入的家庭中选择,获取家庭列表代码。
ThingSmartFamilyBiz.sharedInstance().getFamilyList(success: { [weak self] homeList in
guard let self = self else {return}
if let homeList = homeList {
for home in homeList {
switch home.dealStatus {
case .accept :
self.homes.append(home)
case .pending:
print("pending")
case .reject:
print("reject")
@unknown default:
fatalError()
}
}
}
选择要删除的家庭,传入 homeId
删除家庭。当家庭下还有除了家庭所有者以外的成员时,调用该方法会失败。
删除家庭后,家庭下所有设备会重置。
ThingSmartFamilyBiz.sharedInstance().deleteFamily(withHomeId: homeModel.homeId) {[weak self] in
guard let self = self else {return}
Alert.showBasicAlert(on: self, with: "Success", message: "Delete home \(homeModel.name!)")
self.homes.remove(at: indexPath.row)
self.selectHomeModel = nil
self.index = nil
tableView.reloadData()
} failure: { [weak self] error in
guard let self = self else {return}
let errorMessage = error?.localizedDescription ?? ""
Alert.showBasicAlert(on: self, with: "Failed to delete home", message: "\(errorMessage)")
}
获取家庭详情,成功后回调家庭模型,从家庭模型中获取设备列表。
ThingSmartFamilyBiz.sharedInstance().getFamilyDetail(withHomeId: homeModel!.homeId) { [weak self] home in
guard let self = self else {return}
deviceList = home?.deviceList ?? []
self.tableView.reloadData()
} failure: { [weak self] error in
guard let self = self else { return }
let errorMessage = error?.localizedDescription ?? ""
Alert.showBasicAlert(on: self, with: "Failed to Fetch home detail", message: errorMessage)
}
实现 ThingSmartFamilyBizDelegate
协议,根据需要实现回调方法。具体 API 信息,参考接口文档。
extension BEHomeDetailViewController : ThingSmartFamilyBizDelegate {
func familyBiz(_ familyBiz: ThingSmartFamilyBiz!, didUpdateHome homeModel: ThingSmartHomeModel!) {
if let home = homeModel {
self.homeModel = home
setupUI()
}
}
}
在家庭下最多可以创建 200 个房间,房间名、房间所属家庭 ID 是必须参数。设备配网成功后,可以绑定到房间下。
ThingSmartRoomBiz.sharedInstance().addHomeRoom(withName: roomName, homeId: currentHome.homeId) { [weak self] roomModel in
guard let self = self else { return }
let action = UIAlertAction(title: NSLocalizedString("OK", comment: ""), style: .default) { [weak self] _ in
guard let self = self else { return }
self.navigationController?.popViewController(animated: true)
}
Alert.showBasicAlert(on: self, with: NSLocalizedString("Success", comment: ""), message: "Add Room", actions: [action])
} failure: {[weak self] error in
guard let self = self else { return }
let errorMessage = error?.localizedDescription ?? ""
Alert.showBasicAlert(on: self, with: "Failed to Add Room", message: errorMessage)
}
此外,还可以获取推荐的房间名列表,以便进行快速选择。
ThingSmartRoomBiz.sharedInstance().getRecommendRooms {[weak self] rooms in
guard let self = self else {return}
self.recommendRoomNames = rooms ?? []
self.tableView.reloadData()
} failure: {[weak self] error in
guard let self = self else {return}
let errorMessage = error?.localizedDescription ?? ""
Alert.showBasicAlert(on: self, with: "Failed to Get Recommend Room", message: errorMessage)
}
获取家庭下的房间列表。
ThingSmartRoomBiz.sharedInstance().getRoomList(withHomeId: model.homeId) {[weak self] rooms in
guard let self = self else {return}
self.roomList = rooms ?? []
self.tableView.reloadData()
} failure: { [weak self] error in
guard let self = self else { return }
let errorMessage = error?.localizedDescription ?? ""
Alert.showBasicAlert(on: self, with: "Failed to Get Room", message: errorMessage)
}
选择要删除的房间,传入 homeId
和 roomId
删除房间。
ThingSmartRoomBiz.sharedInstance().removeHomeRoom(withRoomId: room.roomId, homeId: home.homeId) {[weak self] in
guard let self = self else { return }
let action = UIAlertAction(title: NSLocalizedString("OK", comment: ""), style: .default) { [weak self] _ in
guard let self = self else { return }
self.navigationController?.popViewController(animated: true)
}
Alert.showBasicAlert(on: self, with: NSLocalizedString("Success", comment: ""), message: "Delete Room", actions: [action])
} failure: { error in
}
家庭所有者可以添加管理员和普通成员,而管理员可以添加普通成员。
通过 App 账号添加成员
需要传入成员名称、国家码、账号、角色枚举值(0
是普通成员,1
是管理员),添加成员代码:
let requestModel = ThingSmartHomeAddMemberRequestModel()
requestModel.name = nameField.text ?? ""
requestModel.account = accountField.text ?? ""
requestModel.countryCode = codeField.text ?? ""
if role == "0" {
requestModel.role = .member
} else if role == "1" {
requestModel.role = .admin
} else {
Alert.showBasicAlert(on: self, with: "Failed to Add Member", message: "role value is invalid, input 0 or 1")
return
}
ThingSmartMemberBiz.sharedInstance().addHomeMember(with: requestModel, homeId: homeId) {[weak self] member in
guard let self = self else { return }
let action = UIAlertAction(title: NSLocalizedString("OK", comment: ""), style: .default) { [weak self] _ in
guard let self = self else { return }
self.navigationController?.popViewController(animated: true)
}
Alert.showBasicAlert(on: self, with: NSLocalizedString("Success", comment: ""), message: "Add Member", actions: [action])
} failure: { [weak self] error in
guard let self = self else { return }
let errorMessage = error?.localizedDescription ?? ""
Alert.showBasicAlert(on: self, with: "Failed to Add Member", message: errorMessage)
}
调用该方法成功后,切换到待添加成员的账号,待添加的成员账号下将新增一个家庭,家庭状态为 pending
,可以选择接受或者拒绝加入家庭。
接受加入家庭代码如下:
ThingSmartFamilyBiz.sharedInstance().acceptJoinFamily(withHomeId: model.homeId) {[weak self] _ in
guard let self = self else {return}
homes.remove(at: indexPath.row)
self.tableView.reloadData()
} failure: {[weak self] error in
guard let self = self else { return }
let errorMessage = error?.localizedDescription ?? ""
Alert.showBasicAlert(on: self, with: NSLocalizedString("Failed to Accept Home", comment: ""), message: errorMessage)
}
拒绝加入家庭代码如下:
ThingSmartFamilyBiz.sharedInstance().rejectJoinFamily(withHomeId: model.homeId) {[weak self] _ in
guard let self = self else {return}
homes.remove(at: indexPath.row)
self.tableView.reloadData()
} failure: {[weak self] error in
guard let self = self else { return }
let errorMessage = error?.localizedDescription ?? ""
Alert.showBasicAlert(on: self, with: NSLocalizedString("Failed to Reject Home", comment: ""), message: errorMessage)
}
获取家庭下的成员列表。
ThingSmartMemberBiz.sharedInstance().getHomeMemberList(withHomeId: model.homeId) {[weak self] members in
guard let self = self else { return }
self.memberList = members
self.tableView.reloadData()
} failure: {[weak self] error in
guard let self = self else { return }
let errorMessage = error?.localizedDescription ?? ""
Alert.showBasicAlert(on: self, with: "Failed to get member list", message: errorMessage)
}
选择要删除的成员,传入 memberId
删除成员。
ThingSmartMemberBiz.sharedInstance().removeHomeMember(withMemberId: member!.memberId) {[weak self] in
guard let self = self else { return }
let action = UIAlertAction(title: NSLocalizedString("OK", comment: ""), style: .default) { [weak self] _ in
guard let self = self else { return }
self.navigationController?.popViewController(animated: true)
}
Alert.showBasicAlert(on: self, with: NSLocalizedString("Success", comment: ""), message: "Delete Member", actions: [action])
} failure: {[weak self] error in
guard let self = self else { return }
let errorMessage = error?.localizedDescription ?? ""
Alert.showBasicAlert(on: self, with: "Failed to Delete Member", message: errorMessage)
}
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈