权限控制群

权限控制群的特点是具有群主、管理员、普通群成员等角色。目前可控制的权限有:需要用户同意邀请才能加入这种群。

更多的权限控制,例如设置进群密码、需要群主或者管理员同意才能进入群等,目前还在测试中,接下来要发布的版本中即将包含。

创建权限控制群

YWTribeDescriptionParam *param = [[YWTribeDescriptionParam alloc] init];
param.tribeName = self.textFieldName.text;
param.tribeNotice = self.textFieldBulletin.text;
param.tribeType = YWTribeTypeNormal;

__weak typeof(self) weakSelf = self;
[self.ywTribeService createTribeWithDescription:param completion:^(YWTribe *tribe, NSError *error) {
    /// 提示创建结果
}];

修改群成员身份

您可以通过以下接口修改群成员的身份:

__weak typeof(self) weakSelf = self;
[[self ywTribeService] setMember:member withRole:role fromTribe:self.tribe.tribeId completion:^(YWPerson *member, YWTribeMemberRole role, NSString *tribeId, NSError *error) {
    if (!error) {
        if (role == YWTribeMemberRoleManager) {
            // 设置管理员成功
        }
        else if (role == YWTribeMemberRoleNormal) {
            // 取消管理员成功
        }
    }
}];

监听群成员身份变更

您可以通过如下接口监听身份变为群主或管理员的通知:

[self.ywTribeService addTribeOwnerDidChangeBlock:^(NSDictionary *userInfo) {
   NSString *tribeName = userInfo[YWTribeServiceKeyTribeName];
   YWPerson *person = userInfo[YWTribeServiceKeyPerson];
   YWPerson *master = userInfo[YWTribeServiceKeyPerson2];
   NSString *message = nil;
   if (self.tribe.tribeType == YWTribeTypeMultipleChat) {
   		message = [NSString stringWithFormat:@"群:%@ 中群主已由 %@ 变为 %@", tribeName, master.personId, person.personId];
   }
   else {
   		message = [NSString stringWithFormat:@"群:%@ 中群主 %@ 将 %@ 设置为管理员", tribeName, master.personId, person.personId];
   }
  
		/// show message
} forKey:self.description ofPriority:YWBlockPriorityDeveloper];

您可以通过如下接口监听被撤销管理员身份的通知:

[self.ywTribeService addTribeRemoveAdminBlock:^(NSDictionary *userInfo) {
   NSString *tribeName = userInfo[YWTribeServiceKeyTribeName];
   YWPerson *person = userInfo[YWTribeServiceKeyPerson];
   YWPerson *master = userInfo[YWTribeServiceKeyPerson2];
   NSString *message = [NSString stringWithFormat:@"群:%@ 中群主 %@ 撤销了 %@ 的管理员身份", tribeName, master.personId, person.personId];
		/// show message
} forKey:self.description ofPriority:YWBlockPriorityDeveloper];

修改加入群的校验类型

您可以通过以下接口修改加入群的校验类型,其中仅当校验类型为密码校验时,才需要将密码文本作为 checkInfo 参数传入:

NSString *password = (checkMode == YWTribeCheckModePassword) ? textField.text : nil;
[[self ywTribeService] modifyCheckMode:(YWTribeCheckMode)checkMode
                             checkInfo:password
                               ofTribe:tribeId
                            completion:^(NSString *tribeId, YWTribeCheckMode checkMode, NSError *error) {
                            }];

监听入群校验类型变更的通知

入群验证类型的变更,同样会调用群信息变更的通知,所以可以用以下代码检查是否是入群校验类型发生了变化:

[[self ywTribeService] addTribeInfoDidUpdateBlock:^(NSDictionary *userInfo) {
    NSString *tribeId = userInfo[YWTribeServiceKeyTribeId];
    if ([tribeId isEqualToString:weakSelf.tribeId]) {
       NSNumber *checkMode = userInfo[YWTribeServiceKeyTribeCheckMode];
        if (checkMode) {
        	// 验证类型发生了变更            
        }
    }
} forKey:self.description ofPriority:YWBlockPriorityDeveloper];

监听被邀请的通知

[[self.IMCoreRef getTribeService] addInvitationFromTribeBlock:^(NSDictionary *userInfo) {
    /// TODO 提示用户
    } forKey:self.description ofPriority:YWBlockPriorityDeveloper];

群系统消息

部分类型的群系统消息,如被邀请加入群的系统消息,不会存在于相应的群聊会话中,而是存在于全局统一的群系统消息会话中,如果要获取这些类型的消息,需要先获取群系统消息会话,然后如同使用其它聊天会话一样加载消息:

YWTribeSystemConversation *conversation = [[self ywTribeService] fetchTribeSystemConversation];
[conversation loadMoreMessages:10 completion:^(BOOL existMore) {
	...
}];

群系统消息会话中无法发送新消息,但可以用以下方法对状态为待处理状态的消息进行处理:

[[self ywTribeService] processTribeSystemMessageBody:messageBody
                                            toStatus:YWMessageBodyTribeSystemStatusAccepted
                                          completion:^(NSError *error) {
                                          	...
                                          }];

FAQ

关于此文档暂时还没有FAQ
返回
顶部