iOS 环信,群聊会议相关问题

在用到环信的群聊会议时,开启群聊会议,默认发送一条静默消息,如果此时用户在app其他界面浏览,是不知道有邀请信息的,也就无法及时接收到对方的邀请。所以为了解决这一问题,我添加了提示框提示,用户在前台任何界面操作都能及时弹出。

1、收到群聊会议,实际上是发送了文本消息,会走下面的代理方法

#pragma mark - EMChatManagerDelegate

//收到发送的消息
- (void)messagesDidReceive:(NSArray *)aMessages

2、 在该代理方法中获取群聊会议的会话id,因为只有群聊会议才有会话id,所以根据会话id来判断当前消息是否是群聊会议

- (void)messagesDidReceive:(NSArray *)aMessages{
   for (EMMessage *message in aMessages) {
         [UserCacheManager save:message.ext];// 通过消息的扩展属性传递昵称和头像时,需要调用这句代码缓存
        NSLog(@"message.ext == %@",message.ext);
        //根据ext消息扩展去获取会话id
        NSString *em_conference_id = [message.ext objectForKey:@"conferenceId"];
        
        BOOL needShowNotification = (message.chatType != EMChatTypeChat) ? [self _needShowNotification:message.conversationId] : YES;
    
        //如果是群聊会议
        if (em_conference_id.length) {

            self.emMessage = message;
             //根据用户id获取昵称           
            NSString *name = [UserCacheManager getNickName:message.from];
          //弹出提示框
            UIAlertController * alert = [UIAlertController alertControllerWithTitle:@"提示" message:[NSString stringWithFormat:@"%@邀请您加入会话...",name] preferredStyle:UIAlertControllerStyleAlert];
               
            UIAlertAction * sureAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
                //发送通知,打开多人会议界面
                   [[NSNotificationCenter defaultCenter] postNotificationName:CALL_SELECTCONFERENCECELL object:message];
            }];
            
                UIAlertAction * cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];
            
                [alert addAction:cancelAction];
                [alert addAction:sureAction];
             //因为当前类是继承于NSObject,所以利用根控制器弹出
            UIViewController *rootViewController = [[[UIApplication sharedApplication] keyWindow] rootViewController];
            [rootViewController presentViewController:alert animated:YES completion:nil];
  
        }
 }
}

总结:当收到群聊会议时,在代理方法中获取会话id,如果存在,则弹出提示框,点击确定,打开多人会议界面。

注意:如果应用退到后台,或者应用杀死后,对方发送群聊会议,此时通过发送本地通知和远程通知去实现即可。

你可能感兴趣的:(iOS 环信,群聊会议相关问题)