集成iOS SDk前的准备:
(如果需要推送消息,则要到苹果官网上制作证书,再到环信后台制作推送证书http://www.easemob.com/docs/ios/IOSSDKPrepare/#registerDeveloper)
注册环信开发者账号并创建后台应用,
登陆地址:https://console.easemob.com/?comeFrom=easemobHome
注册模式为开放注册,填写对应信息后得到AppKey
需要用到的内容:
EMCallManagerDelegate语音视频代理
AVFoundation音频输出
EMCallSession会话信息
音视频集成过程:
1、在环信官网申请一个AppKey
2、导入SDK
环信官方下载SDK和官方Demo,打开Xcode工程将下载的iOS_IM_SDK_V3.6.0文件夹下的EaseUI(UI框架)文件夹与HyphenateFullSDK(包含实时通话)文件夹或HyphenateSDK(不包含实时通话功能的SDK)添加到项目工程中(注意勾选Copy items if needed、Create groups与Add to targets)
或
用cocoapods添加HyphenateSDK(不包含实时通话功能的SDK)、HyphenateFullSDK(包含实时通话的SDK)和EaseUI(集成sdk到项目中)
#Lite版本(不带实时音视频通话功能)
pod 'HyphenateLite'
#Full版本(带实时音视频通话功能)
pod 'Hyphenate'
在Podfile目录下执行指令pod install
注:用到一些Demo中的内容3rdparty、chatSDK、ChatUI
3、设置工程属性:
选择工程名-->TARGETS-->General-->Embedded Binaries添加Hyphenate.framework
HyphenateLite.framework
向General→Linked Frameworks andLibraies 中添加
HyphenateLite.framework(将【Required】改为【Optional】)
Hyphenate.framework(将【Required】改为【Optional】)
向Build Phases →Link Binary With Libraries 中添加依赖库:
CoreMedia.framework
AudioToolbox.framework
AVFoundation.framework
MobileCoreServices.framework
ImageIO.framework
libc++.dylib
libz.dylib
libstdc++.6.0.9.dylib
libsqlite3.dylib
libiconv.dylib
官方漏掉了的系统库:
CoreMotion.framework
UserNotifications.framework
AssetsLibrary.framework
MapKit.framework
Photos.framework
libbz2.1.0.dylib
后端云LeanCloud需要引入的依赖库:
libicucore.dylib
SystemConfiguration.framework
CoreTelephony.framework
CoreLocation.framework
(如果使用的是xcode7+,后缀为tbd)
(SDK不支持bitcode,Build Settings → 搜索bitcode →Enable Bitcode 中设置NO,此时编译不报错,集成成功)
4、编写页面逻辑,会话列表+聊天界面(环信有提供列表页,在EaseUI的子文件夹EMUIKit的子文件夹ViewController就已经包含了UI页面,找到EMiOSDemo→Class→Call+EMDemoHelper添加到自己的工程中,修改对应的EMDemoHelper工具类中的报错)
提醒:在集成时必须向工程导入Helper模块,然后在根据需求导入其他模块。
环信UI模块依赖于以下三方库:
pod 'Bugly'
pod 'Masonry'
pod 'MJRefresh'
pod 'MBProgressHUD', '~> 1.1.0'
pod 'SDWebImage', '~> 4.0'
pod 'SDWebImage/GIF'
pod 'FLAnimatedImage', '~> 1.0'
pod 'Hyphenate'
5、增加隐私权限,在工程info.plist文件里面添加隐私权限,用于Chat聊天模块发送图片,语音,视频,位置消息使用
Privacy - Photo Library Usage Description 需要访问您的相册
Privacy - Microphone Usage Description 需要访问您的麦克风(是否允许此使用你的麦克风)
Privacy - Camera Usage Description 需要访问您的相机(是否允许使用你的相机)
Privacy - Location Always Usage Description 需要您的同意,才能在使用期间访问位置
Privacy - Location When In Use Usage Description 需要您的同意,才能始终访问位置
6、.pch配置(从官方的Demo中的.pch中粘贴即可)
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
//包含实时音视频功能SDK 的头文件
#import <Hyphenate/Hyphenate.h>
// UI 头文件
#import "EMHeaders.h"
#endif
或
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
//不包含实时音视频功能SDK 的头文件
#import <HyphenateLite/HyphenateLite.h>
// UI 头文件
#import "EMHeaders.h"
#endif
7、初始化SDK及登录环信服务器
设置Appdelegate,参考Appdelegate.m文件即可
在Appdelegate中导入#import <Hyphenate/Hyphenate.h>头文件,然后在
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
方法中使用如下代码实现初始化即可:
// appkey替换成自己在环信管理后台注册应用中的appkey
EMOptions *options = [EMOptions optionsWithAppkey:@"appkey"];
// apnsCertName是证书名称,可以先传nil,等后期配置apns推送(苹果推送通知服务)时在传入证书名称
options.apnsCertName = nil;
[[EMClient sharedClient] initializeSDKWithOptions:options];
例如:
EMOptions *options = [EMOptions optionsWithAppkey:@"douser#istore"];
options.apnsCertName = @"istore_dev&