美文网首页
iOS 环信,群聊会议相关问题

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

作者: 宏炜 | 来源:发表于2019-11-18 11:58 被阅读0次

    在用到环信的群聊会议时,开启群聊会议,默认发送一条静默消息,如果此时用户在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 环信,群聊会议相关问题

          本文链接:https://www.haomeiwen.com/subject/bwvvictx.html