====== 集成 iOS SDK ====== ---- 在您阅读此文档时,我们假定您已经具备了基础的 iOS 应用开发经验,并能够理解相关基础概念。 ===== 下载 SDK ===== **通过 Cocoapods 下载地址** * 不包含实时语音版本SDK(EaseMobClientSDKLite),引用时 #import pod 'EaseMobSDK', :git => 'https://github.com/easemob/sdk-ios-cocoapods.git' * 包含实时语音版本SDK(EaseMobClientSDK),引用时 #import pod 'EaseMobSDKFull', :git => 'https://github.com/easemob/sdk-ios-cocoapods-integration.git' **直接下载** 您可以到[[http://www.easemob.com/download/im|环信官网]]下载环信 SDK。 到此您已经下载好了 SDK,下面开始学习 SDK 的集成使用吧! 注: 由于 iOS 编译的特殊性,为了方便开发者使用,我们将 i386 x86_64 armv7 armv7s arm64 几个平台都合并到了一起,所以 SDK 的静态库(.a 文件)比较大。实际集成编译出 ipa 后,根据调用功能的多少,实际只会增加 2MB 左右。 ===== SDK 目录讲解 ===== 从官网上下载下来的包中分为如下四部分: * 环信 iOS EaseMobSDK 开发使用 * 环信 iOS EaseMobSDKLite 开发使用 * 环信 iOS release note 更新说明 * 环信 iOS UIDemo 工程源码 * 环信 iOS UIDemo.ipa 打包的 ipa iOS EaseMobSDK(EaseMobSDKLite) 中有三个子文件夹:include、lib、resources,请不要擅自修改这些文件夹的任何东西,下面依次介绍这三个子文件夹。 * lib 静态库,EaseMobSDK/lib中包含静态库 libEaseMobClientSDK.a,EaseMobSDKLite/lib中包含静态库 libEaseMobClientSDKLite.a。libEaseMobClientSDKLite.a 不包含实时语音功能,libEaseMobClientSDK.a包含所有功能。如果你的 APP 中不需要实时语音功能,使用 libEaseMobClientSDKLite.a 即可。 * resources sdk 的 bundle,包含旧版 SDK 的数据库、消息提示音,SDK 配置文件。其中 SDK 配置文件已加密,旧版 SDK 数据库几乎没什么实质作用。 * include 包含 SDK 的头文件。 主要介绍下 include,所有的接口都在这个文件夹中。 * EaseMobClientSDK/EaseMobClientSDKLite 包含在项目中要引用的总头文件,即在代码中只需 #import"EMSDKFull.h" 或 #import"EaseMob.h" 即可调用所有对应的 API。 * CallService 包含实时语音相关的接口 * ChatService 包含聊天相关的接口,比如注册、登录、退出、单聊、群聊、群组等 * Utility 包含 DeviceManager 和 ErrorManager。DeviceManager 硬件相关接口,ErrorManager 错误码定义 具体接口讲解请转到[[http://www.easemob.com/docs/ios/apiDocs/IOSSDKAPIChatManager/|Apple Docs]]。 注: - include 包含5个子文件夹:CallService、ChatService、EaseMobClientSDK、EaseMobClientSDKLite、Utility。 - 类似 EM@Manager 命名格式的文件夹的内部结构都是相似的。delegates 文件夹包含各种代理接口,internal 文件夹包含各种协议的声明,types 文件夹包含各种实例的声明。 ===== 配置工程 ===== ==== 导入 SDK ==== 将下载好的 SDK 文件夹(EaseMobSDK)拖入到项目中,并勾选上 Destination。 {{:start:300iosclientintegration:ios_importsdk.jpg?nolink|导入SDK}} ==== 设置工程属性 ==== 第 1 步:向 Build Phases -> Link Binary With Libraries 中添加依赖库。 {{:start:300iosclientintegration:ios_addframework.jpg?nolink|添加依赖库}} SDK 依赖库有: * MobileCoreServices.framework * CFNetwork.framework * libEaseMobClientSDKLite.a * libsqlite3.dylib * libstdc++.6.0.9.dylib * libz.dylib * libiconv.dylib * libresolv.dylib * libxml2.dylib **(如果使用的是 xcode7,后缀为 tbd)** 第 2 步:向 Build Settings -> Linking -> Other Linker Flags 中添加 -ObjC(注意大小写) {{:start:300iosclientintegration:ios_otherlinker.jpg?nolink|添加-ObjC(注意大小写)}} (如果项目中使用 -ObjC 有冲突,可以添加 -force_load 来解决) 格式为: -force_load[空格]EaseMobSDK/lib/libEaseMobClientSDKLite.a(静态库的路径) 1. 先添加一个-force_load。 {{:start:300iosclientintegration:ios_force_load1.jpg?nolink|添加-force_load}} 2. 将静态库拖动到上一步添加的 -force_load 下面。 {{:start:300iosclientintegration:ios_force_load2.jpg?nolink|将静态库拖动到-force_load下面}} 最终效果: {{:start:300iosclientintegration:ios_force_load3.jpg?nolink|最终效果}} ===== 编译工程 ===== 以上步骤进行完后,编译工程,如果没有报错,恭喜你,集成 SDK 成功,可以进行下一步了。 ---- 上一页:[[start:300iosclientintegration:10prepareforsdkimport|集成 iOS SDK 前的准备工作]] 下一页:[[start:300iosclientintegration:30iossdkbasic|iOS SDK基础功能]]