成员信息管理

更新时间:2024-02-05 06:50:28下载pdf

本文介绍成员管理相关的功能,包括添加成员、移除成员、修改成员信息、邀请成员等。成员管理对应 ThingSmartMemberBiz 类。

类名(或协议名) 说明
ThingSmartMemberBiz 成员管理类
ThingSmartHomeMemberModel 成员模型类

数据模型

ThingSmartHomeMemberModel 数据模型

字段 类型 描述
memberId long long 成员 ID
homeId long long 成员所在家庭 ID
headPic NSString 成员头像
name NSString 成员名称
role ThingHomeRoleType 成员角色
  • owner: 家庭所有者
  • admin: 管理员
  • member:普通成员

其中成员不同角色的权限功能如下:

角色类型 角色描述 权限功能
家庭所有者 一般为家庭的创建者,一个家庭只能有一个家庭所有者,家庭所有者权限最大
  • 家庭查询,修改,删除
  • 家庭所有者权限转移
  • 该家庭房间查询,创建,修改,删除
  • 家庭成员查询,修改,删除
  • 家庭成员新增管理员和普通成员
  • 家庭下添加设备,设备状态查看,设备控制,设备编辑,设备共享,设备移除,设备固件升级
  • 家庭下创建群组,设备控制,群组编辑,解散群组,群组控制
  • 家庭下智能场景查询,修改,新增
管理员 只有家庭所有者可以添加管理员,一个家庭可以有多个管理员,管理员权限不能删除家庭,只能离开家庭,只能添加普通成员
  • 家庭查询,修改,离开
  • 家庭下房间查询,创建,修改,删除
  • 家庭下成员查询,新增普通成员,修改,删除
  • 家庭下添加设备,设备状态查看,设备控制,设备编辑,设备共享,设备移除,设备固件升级
  • 家庭下创建群组,群组编辑,解散群组,群组控制
  • 家庭下智能场景查询,修改,新增
普通成员 家庭所有者或者管理员添加普通成员,一个家庭可以有多个普通成员,普通成员基本只能查看信息
  • 家庭查询,离开
  • 家庭下房间查询
  • 家庭下成员查询
  • 家庭下设备状态和信息查看
  • 家庭下群组信息查看
  • 家庭下智能场景查询

添加家庭成员

  • 拥有者(Owner)可以添加 管理员普通成员
  • 管理员(Admin)可以添加 普通成员

接口说明

- (void)addHomeMemberWithModel:(ThingSmartHomeAddMemberRequestModel *)model
                        homeId:(long long)homeId
                       success:(void(^)(ThingSmartFamilyMemberModel *memberModel))success
                       failure:(ThingFailureError)failure;

参数说明

参数 说明
model 添加成员请求模型
homeId 家庭 ID
success 成功回调
failure 失败回调

ThingSmartHomeAddMemberRequestModel 数据模型

字段 类型 描述
name NSString 为受邀请者设置的昵称。
account NSString 受邀请账号。
countryCode NSString 受邀请者账号对应国家码。
role ThingHomeRoleType 成员角色。
headPic UIImage 为受邀请者设置的头像,nil 时使用受邀请者个人头像。
autoAccept BOOL 是否需要受邀请者同意接受邀请。
  • YES:受邀请账号自动接受该家庭邀请,无需受邀请者确认。
  • NO:需要受邀请者同意后才可加入该家庭。

ThingSmartFamilyMemberModel 数据模型

字段 类型 描述
memberId long long 成员 ID
headPic NSString 成员头像

调用示例

Objective-C

- (void)addMemberWithHomeId:(long long)homeId {
    ThingSmartHomeAddMemberRequestModel *requestModel = [[ThingSmartHomeAddMemberRequestModel alloc] init];
    requestModel.name = @"";
    requestModel.headPic = [UIImage imageNamed:@""];
    requestModel.countryCode = @"";
    requestModel.account = @"";
    requestModel.role = ThingHomeRoleType_Member;
    requestModel.autoAccept = NO;
    [[ThingSmartMemberBiz sharedInstance] addHomeMemberWithModel:requestModel homeId:homeId success:^(ThingSmartHomeMemberModel * _Nonnull memberModel) {
        
    } failure:^(NSError *error) {
        
    }];
}

Swift

func addMember(homeId:Int64) {
    let model = ThingSmartHomeAddMemberRequestModel()
    model.account = ""
    model.autoAccept = false
    model.countryCode = ""
    model.role = ThingHomeRoleType.member
    model.name = ""
    ThingSmartMemberBiz.sharedInstance().addHomeMember(with: model, homeId: homeId) { memberModel in

    } failure: { error in

    }
}

移除家庭成员

拥有者(ThingHomeRoleType_Owner)可以删除管理员及以下角色,管理员(ThingHomeRoleType_Admin)仅仅可以删除普通成员。

接口说明

若成员传入自身 memberId,针对不同的家庭成员有一些区别:

  • 家庭管理员、普通成员为离开家庭,此时该家庭未注销,设备也不会被重置。
  • 拥有者为删除家庭,同时该家庭下所有设备会被重置,效果与删除家庭一致。
- (void)removeHomeMemberWithMemberId:(long long)memberId
                             success:(ThingSuccessHandler)success
                             failure:(ThingFailureError)failure;

参数说明

参数 说明
memberId 将要移除的成员 ID
success 成功回调
failure 失败回调

调用示例

Objective-C

- (void)removeMember:(long long)memberId {
    [[ThingSmartMemberBiz sharedInstance] removeHomeMemberWithMemberId:memberId success:^{
        
    } failure:^(NSError *error) {
        
    }];
}

Swift

func removeMember(memberId:Int64) {
    ThingSmartMemberBiz.sharedInstance().removeHomeMember(withMemberId: memberId) {

    } failure: { error in

    }
}

更新家庭成员

拥有者(ThingHomeRoleType_Owner)可以修改管理员及以下角色,管理员(ThingHomeRoleType_Admin)仅仅可以修改普通成员。

接口说明

- (void)updateHomeMemberInfoWithModel:(ThingSmartHomeMemberRequestModel *)model
                              success:(ThingSuccessHandler)success
                              failure:(ThingFailureError)failure;

参数说明

参数 说明
model 更新成员信息请求模型
success 成功回调
failure 失败回调

ThingSmartHomeMemberRequestModel 数据模型

字段 类型 描述
memberId long long 将要更新信息的成员 ID
name NSString 为成员设置的昵称
role ThingHomeRoleType 为成员设置的角色
headPic UIImage 为成员设置的头像

调用示例

Objective-C

- (void)updateMember:(long long)memberId {
    ThingSmartHomeMemberRequestModel *requestModel = [[ThingSmartHomeMemberRequestModel alloc] init];
    requestModel.memberId = memberId;
    requestModel.name = @"new nick name";
    requestModel.role = ThingHomeRoleType_Admin;
    requestModel.headPic = [UIImage imageNamed:@""];
    [[ThingSmartMemberBiz sharedInstance] updateHomeMemberInfoWithModel:requestModel success:^{
        
    } failure:^(NSError *error) {
        
    }];
}

Swift

func updateMember(memberId:Int64) {
    let requestModel = ThingSmartHomeMemberRequestModel()
    requestModel.name = "new nick name"
    requestModel.role = ThingHomeRoleType.admin
    requestModel.headPic = UIImage()
    requestModel.memberId = memberId
    ThingSmartMemberBiz.sharedInstance().updateHomeMemberInfo(with: requestModel) {

    } failure: { error in

    }
}

关联成员账号

关联成员账号是在已添加的成员没有绑定邮箱和手机的时候,比如第三方账号登录的情况,可以给成员绑定关联可用的邮箱和手机。家庭拥有者可以关联管理员及以下角色,管理员仅仅可以关联普通成员。

接口说明

- (void)associateHomeMemberWithModel:(ThingSmartHomeMemberAssocaiteRequestModel *)model
                             success:(void(^)(BOOL result))success
                             failure:(ThingFailureError)failure;

参数说明

参数 说明
model 关联成员账号请求模型
success 成功回调
failure 失败回调

ThingSmartHomeMemberAssocaiteRequestModel 数据模型

字段 类型 描述
memberId long long 将要关联账号的成员 ID
countryCode NSString 关联账号的国家码
role ThingHomeRoleType 为成员设置的角色
account NSString 关联账号

调用示例

Objective-C

- (void)associateMember:(long long)memberId {
    ThingSmartHomeMemberAssocaiteRequestModel *requestModel = [[ThingSmartHomeMemberAssocaiteRequestModel alloc] init];
    requestModel.memberId = memberId;
    requestModel.account = @"";
    requestModel.role = ThingHomeRoleType_Member;
    requestModel.countryCode = @"";
    [[ThingSmartMemberBiz sharedInstance] associateHomeMemberWithModel:requestModel success:^(BOOL result) {
        
    } failure:^(NSError *error) {
        
    }];
}

Swift

func associateMember(memberId:Int64) {
    let requestModel = ThingSmartHomeMemberAssocaiteRequestModel()
    requestModel.memberId = memberId;
    requestModel.account = ""
    requestModel.countryCode = ""
    requestModel.role = ThingHomeRoleType.member
    ThingSmartMemberBiz.sharedInstance().associateHomeMember(with: requestModel) { result in

    } failure: { error in

    }
}

获取成员列表

获取家庭下的成员列表。

接口说明

- (void)getHomeMemberListWithHomeId:(long long)homeId
                            success:(void(^)(NSArray <ThingSmartHomeMemberModel *> * list))success
                            failure:(ThingFailureError )failure;

参数说明

参数 说明
homeId 家庭 ID
success 成功回调
failure 失败回调

调用示例

Objective-C

- (void)getMemberListWithHomeId:(long long)homeId {
    [[ThingSmartMemberBiz sharedInstance] getHomeMemberListWithHomeId:homeId success:^(NSArray<ThingSmartHomeMemberModel *> * _Nonnull list) {
        
    } failure:^(NSError *error) {
        
    }];
}

Swift

func getMemberList(with homeId:Int64) {
    ThingSmartMemberBiz.sharedInstance().getHomeMemberList(withHomeId: homeId) { memberList in

    } failure: { error in

    }
}

获取成员信息

获取家庭下具体的成员信息。

接口说明

- (void)getHomeMemberInfoWithHomeId:(long long)homeId
                           memberId:(long long)memberId
                            success:(void(^)(ThingSmartHomeMemberModel * model))success
                             failure:(ThingFailureError)failure;

参数说明

参数 说明
homeId 家庭 ID
memberId 成员 ID
success 成功回调
failure 失败回调

调用示例

Objective-C

- (void)getMemberInfoWithHomeId:(long long)homeId memberId:(long long)memberId {
    [[ThingSmartMemberBiz sharedInstance] getHomeMemberInfoWithHomeId:homeId memberId:memberId success:^(ThingSmartHomeMemberModel * _Nonnull model) {
        
    } failure:^(NSError *error) {
        
    }];
}

Swift

func getMemberInfo(homeId:Int64, memberId:Int64) {
    ThingSmartMemberBiz.sharedInstance().getHomeMemberInfo(withHomeId: homeId, memberId: memberId) { memberModel in

    } failure: { error in

    }
}

获取成员可使用的设备

获取该家庭成员角色可使用的设备列表,比如某类门锁设备或者其他安防类设备可授权部分家庭成员操控该设备。

接口说明

- (void)getHomeMemberDeviceListWithMemberId:(long long)memberId
                                    success:(void(^)(NSArray <ThingSmartMemberLinkDeviceListModel *> * list))success
                                  	failure:(ThingFailureError)failure;

参数说明

参数 说明
memberId 成员 ID
success 成功回调
failure 失败回调

调用示例

Objective-C

- (void)getDeviceListWithMemberId:(long long)memberId {
    [[ThingSmartMemberBiz sharedInstance] getHomeMemberDeviceListWithMemberId:memberId success:^(NSArray<ThingSmartMemberLinkDeviceListModel *> * _Nonnull list) {
        
    } failure:^(NSError *error) {
        
    }];
}

Swift

func getDeviceList(memberId:Int64) {
    ThingSmartMemberBiz.sharedInstance().getHomeMemberDeviceList(withMemberId: memberId) { deviceList in

    } failure: { error in

    }
}

转移家庭权限

家庭所有者将家庭转移给别的成员。

接口说明

- (void)transferHomeWithMemberId:(long long)memberId
                         success:(ThingSuccessHandler)success
                         failure:(ThingFailureError)failure;

参数说明

参数 说明
memberId 成员 ID
success 成功回调
failure 失败回调

调用示例

Objective-C

- (void)transferHomeToMember:(long long)memberId {
    [[ThingSmartMemberBiz sharedInstance] transferHomeWithMemberId:memberId success:^{
        
    } failure:^(NSError *error) {
        
    }];
}

Swift

func transferHome(to memberId:Int64) {
    ThingSmartMemberBiz.sharedInstance().transferHome(withMemberId: memberId) {

    } failure: { error in

    }
}

获取邀请成员记录

获取家庭下成员邀请记录,包含已邀请未加入、已过期的邀请记录。

接口说明

- (void)getInvitationRecordListWithHomeId:(long long)homeId
                                    success:(void(^)(NSArray<ThingSmartHomeInvitationRecordModel *> *invitationRecordList))success
                                    failure:(ThingFailureError)failure;

参数说明

参数 说明
homeId 家庭 ID
success 成功回调
failure 失败回调

ThingSmartHomeInvitationRecordModel 数据模型

字段 类型 描述
validTime NSInteger 邀请有效时间
invitationID NSNumber 邀请 ID
invitationCode NSString 邀请码
name NSString 邀请标识名称

调用示例

Objective-C

- (void)getRecordListWithHomeId:(long long)homeId {
    [[ThingSmartMemberBiz sharedInstance] getInvitationRecordListWithHomeId:homeId success:^(NSArray<ThingSmartHomeInvitationRecordModel *> * _Nonnull invitationRecordList) {
        
    } failure:^(NSError *error) {
        
    }];
}

Swift

func getRecordList(homeId:Int64) {
    ThingSmartMemberBiz.sharedInstance().getInvitationRecordList(withHomeId: homeId) { recordList in

    } failure: { error in

    }
}

创建家庭成员邀请码

创建邀请码成功后,调用 success 回调邀请结果模型,包含邀请码和邀请语。

接口说明

- (void)createInvitationWithHomeId:(long long)homeId
                           success:(void(^)(ThingSmartHomeInvitationResultModel *invitationResultModel))success
                           failure:(ThingFailureError)failure;

参数说明

参数 说明
homeId 家庭 ID
success 成功回调
failure 失败回调

ThingSmartHomeInvitationResultModel 数据模型

字段 类型 描述
invitationCode NSString 邀请码
invitationMsgContent NSString 邀请语

调用示例

Objective-C

- (void)createInvitation:(long long)homeId {
    [[ThingSmartMemberBiz sharedInstance] createInvitationWithHomeId:homeId success:^(ThingSmartHomeInvitationResultModel * _Nonnull invitationResultModel) {
        
    } failure:^(NSError *error) {
        
    }];
}

Swift

func createInvitation(homeId:Int64) {
    ThingSmartMemberBiz.sharedInstance().createInvitation(withHomeId: homeId) { invitation in

    } failure: { error in

    }
}

重新创建家庭成员邀请码

邀请码超过有效期之后,用户不能通过之前生成的邀请码加入家庭,可以调用该接口重新生成邀请码,邀请 ID 不变。

接口说明

- (void)reinviteInvitationWithInvitationId:(NSNumber *)invitationId
                                   success:(void(^)(ThingSmartHomeInvitationResultModel *invitationResultModel))success
                                   failure:(ThingFailureError)failure;

参数说明

参数 说明
invitationId 邀请 ID
success 成功回调
failure 失败回调

调用示例

Objective-C

- (void)reinviteInvitation:(NSNumber *)invitationId {
    [[ThingSmartMemberBiz sharedInstance] reinviteInvitationWithInvitationId:invitationId success:^(ThingSmartHomeInvitationResultModel * _Nonnull invitationResultModel) {
        
    } failure:^(NSError *error) {
        
    }];
}

Swift

func reinviteInvitation(invitationId:NSNumber) {
    ThingSmartMemberBiz.sharedInstance().reinviteInvitation(withInvitationId: invitationId) { invitation in

    } failure: { error in

    }
}

撤销家庭成员邀请码

调用接口撤销邀请码后,用户不能通过之前生成的邀请码加入家庭。

接口说明

- (void)cancelInvitationWithInvitationId:(NSNumber *)invitationId
                                 success:(ThingSuccessBOOL)success
                                 failure:(ThingFailureError)failure;

参数说明

参数 说明
invitationId 邀请 ID
success 成功回调
failure 失败回调

调用示例

Objective-C

- (void)cancelInvitation:(NSNumber *)invitationId {
    [[ThingSmartMemberBiz sharedInstance] cancelInvitationWithInvitationId:invitationId success:^(BOOL result) {
        
    } failure:^(NSError *error) {
        
    }];
}

Swift

func cancelInvitation(invitationId:NSNumber) {
    ThingSmartMemberBiz.sharedInstance().cancelInvitation(withInvitationId: invitationId) { result in

    } failure: { error in

    }
}

更新家庭成员邀请码

修改被邀请者信息,更新邀请码。

接口说明

- (void)updateInvitationWithModel:(ThingSmartHomeInvitationInfoRequestModel *)invitationInfoRequestModel
                          success:(ThingSuccessBOOL)success
                          failure:(ThingFailureError)failure;

参数说明

参数 说明
invitationInfoRequestModel 更新邀请码请求模型
success 成功回调
failure 失败回调

ThingSmartHomeInvitationInfoRequestModel 数据模型

字段 类型 描述
invitationID NSString 邀请 ID
name NSString 邀请标识名称

调用示例

Objective-C

- (void)updateInvitation:(ThingSmartHomeInvitationInfoRequestModel *)model {
    ThingSmartHomeInvitationInfoRequestModel *requestModel = [[ThingSmartHomeInvitationInfoRequestModel alloc] init];
    requestModel.invitationID = [NSNumber new];
    requestModel.name = @"";
    [[ThingSmartMemberBiz sharedInstance] updateInvitationWithModel:model success:^(BOOL result) {
        
    } failure:^(NSError *error) {
        
    }];
}

Swift

func updateInvitation(invitationId:NSNumber) {
    let requestModel = ThingSmartHomeInvitationInfoRequestModel()
    requestModel.invitationID = invitationId
    requestModel.name = ""
    ThingSmartMemberBiz.sharedInstance().updateInvitation(with: requestModel) { result in

    } failure: { error in

    }
}