差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
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方式跳转到聊天页面。 |