差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
im:ios:sdk:quickstart_draft [2019/04/08 11:59]
jk [集成SDK]
— (当前版本)
行 1: 行 1:
-====== iOS SDK 快速集成 ====== 
  
----- 
- 
-===== 注册环信开发者账号并创建后台应用 ===== 
- 
-详细操作步骤见[[im:​quickstart:​guide:​experience|开发者注册及管理后台]]。 
- 
-Appkey:一个 APP 的唯一标识 
-在创建好的应用内注册两个IM用户(也可以称为环信id),例如: 账号:user1,密码:123 ; 账号:user2,密码:123,用来通过SDK登录环信服务器,收发消息测试。 
- 
-IM用户:一个appkey下的唯一标识用户,用来登录环信服务器进行收发消息的用户。 
- 
- 
- 
-在环信Console后台,点击创建好的应用 → IM用户 → 创建IM用户 
- 
-{{:​im:​ios:​sdk:​创建用户.png?​direct|}} 
- 
-建议创建两个IM用户,用于后面集成SDK之后聊天使用。例如登录user1,在初始化聊天页面时传入user2,user1给user2发消息测试。 
- 
-{{:​im:​ios:​sdk:​用户.png?​direct|}} 
- 
-===== 集成SDK ===== 
- 
-环信 SDK 支持手动导入,pod 方式导入,两种方式任选其一即可,下面分别介绍两种导入方式。 
- 
-==== 手动导入SDK ==== 
- 
-[[https://​download-sdk.oss-cn-beijing.aliyuncs.com/​downloads/​iOS_IM_SDK_V3.5.3.zip|下载环信demo]] 
- 
-SDK 目录讲解 
- 
-从官网上下载下来的demo中分为如下八部分: 
- 
-  * ChatDemo-UI3.0 ​  ​工程源码 
- 
-  * ChatDemo-UI3.0.ipa ​  ​打包的 ipa 
- 
-  * doc   ​SDK相关API文档 
- 
-  * EaseUI ​  ​基础UI源码 
- 
-  * HyphenateAVRecorderPlugin ​  ​实时通话录制和截屏功能 
- 
-  * HyphenateFullSDK ​   开发使用(包含实时通话功能的SDK) 
- 
-  * HyphenateIDFAPlugin ​   IDFA的库 
- 
-  * HyphenateSDK ​  ​开发使用(不包含实时通话功能的SDK) 
- 
-开发者最开始集成,如果选择手动导入文件集成的方式,只需要向工程中添HyphenateFullSDK或者HyphenateSDK以及EaseUI两个文件就可以,下面会介绍具体的集成方式。 
- 
-demo中有两个SDK文件夹: 
- 
-  * HyphenateSDK ​  ​开发使用(不包含实时语音视频通话功能) 
- 
-  * HyphenateFullSDK ​  ​开发使用(包含实时语音视频通话功能) 
- 
-两个SDK除了是否带有实时语音视频通话功能,其他功能都是相同的。 
- 
-两者中选择一个SDK文件夹拖入到工程中,以导入HyphenateSDK为例,并勾选截图中标注的三项。 
- 
-{{:​im:​ios:​sdk:​选项.png?​direct|}} 
- 
-=== 设置工程属性 === 
- 
-向General → Embedded Binaries 中添加依赖库。 
- 
-{{:​im:​ios:​sdk:​依赖库.png?​direct|}} 
- 
-==== Pod导入SDK ==== 
- 
-推荐使用Cocoapods集成环信SDK。Cocoapods提供了一个简单的依赖管理系统,避免手动导入产生的错误(首先需要确认已经安装了Cocoapods)。 
- 
-<​code>​ 
-sudo gem install cocoapods 
-pod setup 
-</​code>​ 
- 
-在Xcode项目的根目录下,新建一个空文件,命名为Podfile,向此文件添加以下行(Lite版与Full,根据自己是否需要实时音视频功能二选一添加即可): 
- 
-<​code>​ 
-#​Lite版本(不带实时音视频通话功能) 
-pod '​HyphenateLite'​ 
-#​Full版本(带实时音视频通话功能) 
-pod '​Hyphenate'​ 
-</​code>​ 
- 
-在Podfile目录下,执行以下指令: 
- 
-<​code>​ 
-pod install 
-</​code>​ 
- 
-===== 集成EaseUI ===== 
- 
-EaseUI是环信的基础UI文件,里面包括聊天页面(EaseMessageViewController),会话列表页面(EaseConversationListViewController),联系人列表页面(EaseUsersListViewController)基础UI页面,导入完环信SDK之后,再将该文件导入到工程中,初始化页面就可以使用。 
- 
-将下载完环信demo中的EaseUI文件导入到工程中即可。 
- 
-EaseUI 中用到的第三方库,三方库所在目录EaseUI → EMUIKit → 3rdparty: 
- 
-  * MWPhotoBrowser:​ 图片处理库,浏览显示 
- 
-  * MJRefresh: 用于页面刷新 
- 
-  * MBProgressHUD:​ 用于提示加载刷新 
- 
-  * libopencore-amrnb.a,​libopencore-amrwb.a:​ 用于 amr 与 wav 之间的转换 
- 
-如果以上的三方库,自己工程中也有使用的话,可以将EaseUI中的三方库删除掉,避免由于三方库重复导致报错。 
- 
- 
-===== 在工程info.plist文件中增加隐私权限 ===== 
- 
-用于EaseUI中发送图片,语音,视频,位置消息使用,如您的工程中已经添加过请忽略: 
- 
-  * 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 需要使用您的位置信息 
- 
-===== 添加环信SDK以及EaseUI头文件 ===== 
- 
-建议在PCH文件中引入SDK以及EaseUI的头文件。如果工程中没有pch文件,需要新建一个,并在Build Settings中设置Prefix Header为该pch文件,例如:iOS/​PrefixHeader.pch。 
- 
-在pch文件文件中添加如下代码: 
- 
-<​code>​ 
-#ifdef __OBJC__ 
-// 包含实时音视频功能SDK的头文件 
-#import <​Hyphenate/​Hyphenate.h>​ 
-#import "​EaseUI.h"​ 
-#endif 
-</​code>​ 
- 
-或者 
- 
-<​code>​ 
-#ifdef __OBJC__ 
-//​不包含实时音视频功能SDK的头文件 
-#import <​HyphenateLite/​HyphenateLite.h>​ 
-#import "​EaseUI.h.h"​ 
-#endif 
-</​code>​ 
- 
-如果自己工程中的pch文件还引入了其他的头文件,那么所有的头文件都需要放到。 
- 
-<​code>​ 
-#ifdef __OBJC__ 
- 
-// 存放pch文件中所有的头文件 
- 
-#endif 的内部 
-</​code>​ 
- 
- 
- 
- 
-===== 初始化SDK以及登录环信服务器 ===== 
- 
-==== 初始化SDK ==== 
- 
-在工程的 AppDelegate 中的以下方法中,调用 SDK 对应方法。 
- 
-<​code>​ 
-- (BOOL)application:​(UIApplication *)application didFinishLaunchingWithOptions:​(NSDictionary *)launchOptions 
-{ 
-    // appkey替换成自己在环信管理后台注册应用中的appkey 
-EMOptions *options = [EMOptions optionsWithAppkey:​@"​appkey"​];​ 
-// apnsCertName是证书名称,可以先传nil,等后期配置apns推送时在传入证书名称 
-    options.apnsCertName = nil; 
-    [[EMClient sharedClient] initializeSDKWithOptions:​options];​ 
-    return YES; 
-} 
-</​code>​ 
- 
-==== 登录环信服务器 ==== 
- 
-<​code>​ 
-// 传入在应用(appkey)下注册的IM用户user1,密码123,用于登录环信服务器 
-EMError *error = [[EMClient sharedClient] loginWithUsername:​@"​user1"​ password:​@"​123"​];​ 
-if (!error) { 
-    NSLog(@"​登录成功"​);​ 
-} 
-</​code>​ 
- 
-  * 如果在集成调试阶段,可以在初始化环信SDK完成之后,就调用登录方法。 
- 
-  * 如果项目上线,建议开发者在登录自己服务器成功之后,在调用环信SDK登录方法使用用户绑定的环信id登录环信服务器(开发者给自己用户在自己服务器创建账号的同时,调用环信的rest接口在给用户授权注册一个环信id,一起返回给app端,app端拿到用户的账号密码以及环信id密码分别登录自己的服务器以及环信服务器)。 
- 
- 
-===== 初始化聊天页面 ===== 
- 
-<​code>​ 
-// 接收消息方的环信ID:​@"​user2"​ 
-// 聊天类型:​EMConversationTypeChat ​   单聊类型 
-EaseMessageViewController *chatController = [[EaseMessageViewController alloc] initWithConversationChatter:​@"​user2"​ conversationType:​EMConversationTypeChat];​ 
-</​code>​ 
- 
-有导航的话,可以用push方式跳转到聊天页面发消息测试,也就是用登录的user1给user2发消息,没有导航的话,可以用present方式跳转到聊天页面。