差别

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

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
im:ios:sdk:quickstart_draft [2019/04/10 12:28]
jk [集成EaseUI]
— (当前版本)
行 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]] 
- 
- 
-  * HyphenateFullSDK ​   开发使用(包含实时通话功能的SDK) 
- 
-  * 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>​ 
- 
-===== 集成 UI ===== 
- 
-环信的 UI 模块在 demo 中的该路径下 EMiOSDemo---Class 
- 
-demo 中有几大 UI 功能模块,在集成时将对应的模块添加到工程中即可。 
-  * Helper------自定义库和页面,第三方库,全局通用模块 
-  ​ 
-  * Chat------聊天模块 
-  ​ 
-  * Conversation------会话列表模块 
-  ​ 
-  * Call------实时音视频模块 
-  ​ 
-  * Contact------好友列表模块 
-  ​ 
-  * Group------群组模块 
-  ​ 
-  * Chatroom------聊天室模块 
- 
-在集成时,必须要先向自己的工程中导入 Helper 模块,然后在根据自己的需求导入其他模块。 
- 
-环信的UI模块依赖于以下三方库: 
-  * Masonry 
-  ​ 
-  * MJRefresh 
-  ​ 
-  * MBProgressHUD 
-  ​ 
-  * SDWebImage 
-  ​ 
-  * SDWebImage/​GIF 
-  ​ 
-  * FLAnimatedImage 
- 
-保证这些三方库在自己的工程中存在。 
- 
-**注意:**三方推荐使用 pod 方式导入,手动导入需要修改 info.plist 重复等报错。 
-===== 在工程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方式跳转到聊天页面。