最近项目中有涉及到即时通讯的功能,所用到的是环信3.1.5的sdk。下面就开始介绍其过程:

(1)集成环信SDK:

pod:pod 'HyphenateFullSDK'

手动:因为我们要使用到语音和视频的功能,所以我们需要导入(环信 iOS HyphenateFullSDK 开发使用(包含实时通话功能))HyphenateFullSDK这个包。手动导入包文件后,我们需要手动加上一些库:

第 1 步:SDK 包含实时语音依赖库有:

CoreMedia.framework

AudioToolbox.framework

AVFoundation.framework

MobileCoreServices.framework

ImageIO.framework

libc++.dylib

libz.dylib

libstdc++.6.0.9.dylib

libsqlite3.dylib

libiconv.dylib

(如果使用的是 xcode7,后缀为 tbd。)

第 2 步:SDK 不支持 bitcode,向 Build Settings → Linking → Enable Bitcode 中设置 NO。

(2)添加EaseUI:

必须和SDK相对应的版本,不然会出现各种报错(方法找不到或者不对)

注意:如果编译报错,1、先检查EaseUI中的第三方是否和本地工程中的重复。                                          2、在PCH文件中引入头文件时:

#ifdef __OBJC__                                                                                                                                     #import "easeUI.h"                                                                                                       #import "EMSDKFull.h"    等等                                                                                          #endif

正式开始代码的编写:

初始化SDK:

//AppKey:注册的AppKey,详细见下面注释。//apnsCertName:推送证书名(不需要加后缀),详细见下面注释。

EMOptions*options=[EMOptions optionsWithAppkey:@"douser#istore"];    options.apnsCertName=@"istore_dev";                                                              [[EMClient sharedClient]initializeSDKWithOptions:options];

注册:

EMError*error=[[EMClient sharedClient]registerWithUsername:@"8001"password:@"111111"];if(error==nil){NSLog(@"注册成功");}

登陆:

EMError*error=[[EMClient sharedClient]loginWithUsername:@"8001"password:@"111111"];if(!error){NSLog(@"登录成功");}

获取与自己相关的所有的会话

cell上的角标、时间、信息等

tabar上的角标

- (void)didReceiveMessages:(NSArray *)aMessages;是刷新该列表的重点(记住注册及代理)。对方发来的消息都会在这个方法中进行刷新列表及跟新角标数等。

注意:其他代码自行到demo中去寻找,环信demo中都有参考;

单聊+群聊:因为自己写的效果远没有环信的好,加上需求不要对聊天界面进行自定义,所以最后我还是直接用的demo中的界面(把demo中的ChatViewController拖到自己工程中,编译,注释掉报错的代码),初始化,push到聊天界面即可:

ChatViewController *chatController = [[ChatViewController alloc] initWithConversationChatter:conversation.conversationId  conversationType:conversation.type];

群列表:获取与之相关所有的群

NSArray *groups = [[EMClient sharedClient].groupManager getMyGroupsFromServerWithError:nil];

语音和视频及时通话:因为都是环信写的 所以把有关及时通话的文件拖进来;

ChatDemoHelper        CallViewController

1:在pct中加上 #define DEMO_CALL 1

2:全局搜索#if DEMO_CALL == 1   删掉,编译如有报错请仔细看是不是哪句代码重复了或者哪里没有注释完全。

3.ChatDemoHelper.m中 注册代码到——#pragma mark - EMCallManagerDelegate宏中间的代码都可以注释掉

重中之重:在根控制器中一定要把控制器赋给ChatDemoHelper:[ChatDemoHelper shareHelper].mainVC = self;

语音和视频通话必走的代码

如果集成语音和视频过程中有问题的,可以参考官方给出的视频,不过只能借鉴:http://www.imgeek.org/video/24

上面所述就是我使用环信的心得,不是很全面。大神手下留情,新手一枚。后续我会把单人昵称、头像;群组名称、群组头像等等的一些方法写出来,如果发现我所提出的有问题和有好的建议,请直接提出来,也可以一起讨论。qq:1804094055 有问题可以找我,环信讨论群:340452063。

ios开发 多人语音聊天_iOS 新手集成单聊、群聊、语音和视频通话的简述相关推荐

  1. [置顶] XMPPFrameWork IOS 开发(六)聊天室

    原始地址:XMPPFrameWork IOS 开发(六)聊天室 聊天室 [cpp]  view plain copy print ? //初始化聊天室 XMPPJID *roomJID = [XMPP ...

  2. 用C语言写一个通信软件,客户端可以实现文字聊天,文件传输,建立群聊;服务端可以创建账号吧...

    首先,需要为客户端和服务端分别编写代码,客户端的代码应该包括实现文字聊天.文件传输和建立群聊的功能,而服务端的代码则需要实现创建账号的功能.需要考虑到网络的安全性.客户端的用户体验以及服务端的可扩展性 ...

  3. ios开发 多人语音聊天_微信“暗黑模式”正式上线!语音界面大改,新增贴心“群工具”...

    微必知科技资讯(winbz.com):3月9日,微信团队对外预热:"为了优化用户体验,微信与苹果达成合作,共同探索微信在iOS系统的暗黑模式体验,目前该功能已完成开发,将有望在下一个新版本中 ...

  4. ios开发 多人语音聊天_手游语音市场的现状、机遇与挑战

    文/手游那点事小鱼原创 2014年持续火热的手游市场成就了一大批企业的上市梦,同时也在大环境下产生了对系列手游增值服务的需求.基于玩家对手游社交性的需求,以及借鉴传统端游,页游中成功的社交体系,手游市 ...

  5. ios开发 多人语音聊天_在 Unity 多人游戏中实现语音对话

    我们曾经不止一次为大家分享过游戏中的实时音视频,例如怎么实现游戏中的听声辨位.狼人杀游戏中的语音聊天挑战等.基本上,都是从技术原理和 Agora SDK 出发来分享的.这次我们换一个角度.我们将从 U ...

  6. ios开发 多人语音聊天_客户端实现(iOS)

    客户端实现(iOS) 本文档为您展示通过 SDK 实现语音聊天室场景的相关步骤,帮助您在业务中实现麦位管理.低延时语音互动.文字聊天等 IM 和音视频通话 2.0 在语音聊天场景下的相关能力. 前提条 ...

  7. ios开发 多人语音聊天_iOS-实现多人语音聊天室-场景实践-音视频通话2.0-网易云信开发文档...

    云信多人语音聊天室(iOS) 这个开源示例项目演示了如何快速集成NERTC SDK,快速实现多人语音聊天室功能. 功能介绍 该示例项目中包含了以下功能: 创建语音聊天室: 使用文字或语音进行多对多互动 ...

  8. 【游戏开发实战】Unity从零开发多人视频聊天功能,无聊了就和自己视频聊天(附源码 | Mirror | 多人视频 | 详细教程)

    文章目录 一.前言 二.思考问题与解决方案 1.思考问题 2.解决方案 2.1.Unity中如何开启摄像头并对图像进行采样 2.2.图像如何中转给其他客户端 2.3.如何实现清晰度切换 2.4.客户端 ...

  9. XMPPFrameWork IOS 开发(六)聊天室

    聊天室 [cpp]  view plain copy print ? //初始化聊天室 XMPPJID *roomJID = [XMPPJID jidWithString:ROOM_JID]; xmp ...

最新文章

  1. 安卓环境搭建 SDK emulator directory is missing
  2. 用word2007发布blog
  3. printf/scanf格式控制符的完整格式
  4. Opencv 图片融合 addWeighted性能测试
  5. View.inflate和LayoutInflater的inflate方法区别
  6. Android环境搭建遭遇Unsupported major.minor version 52.0
  7. 【QGIS入门实战精品教程】4.7:QGIS如何将矢量数据转为GeoJSON格式?
  8. 鸟叔linux私房菜基础篇简体,鸟叔的Linux私房菜基础篇-学习笔记(一)
  9. Automapper 3.2.1以下方法或属性之间的调用不明确
  10. 微软披露首个由中国发现的蠕虫级漏洞 奇安信代码安全实验室获致谢
  11. PyTorch中查看GPU使用情况以及一些重要函数
  12. 题解 P3835 【【模板】可持久化平衡树】
  13. 【八方位云台控制器】
  14. 不支持S/W HEVC(H265)解码的有效解决方案
  15. GNSS/INS组合导航(九):三维简化的INS/GPS组合导航系统
  16. 刘宇凡:七夕,听说爱情曾来过
  17. 教你用Python如何完成一个查票系统实现123006自动抢票啦~
  18. 如何从零开始写一个操作系统?
  19. 《软件测试》第二章 软件开发的过程
  20. 静态分析—扇入、扇出、圈复杂度

热门文章

  1. 九种分布式ID生成方式
  2. Spring Boot学习总结(18)——Springboot 2.0选择HikariCP作为默认数据库连接池的五大理由
  3. 普通程序员,如何转型大数据相关方向?
  4. Dubbo学习总结(1)——Dubbo入门基础与实例讲解
  5. Oracle实例之间的心跳机制,为何而心跳-Oracle Heartbeat研究之二
  6. java二维数组模拟用户登录_Java 语言基础编程题 (二维数组, 五子棋游戏, 实体类和接口)...
  7. 解决设备行业尾款回收问题-深思精锐5时钟锁
  8. 基于HTML5的Web SCADA工控移动应用
  9. 【0】python核心编程,第二章
  10. 【转】ASP.NET ViewState详解