差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
im:ios:sdk:quickstart_draft [2019/01/31 07:51] jk [初始化聊天页面] |
— (当前版本) | ||
---|---|---|---|
行 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方式跳转到聊天页面。 |