差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 后一修订版 两侧同时换到之后的修订记录 | ||
im:ios:sdk:prepare [2019/04/16 11:24] jk [集成 UI] |
im:ios:sdk:prepare [2020/03/19 02:52] huanxinfudh [集成动态库上传AppStore] |
||
---|---|---|---|
行 1: | 行 1: | ||
====== iOS SDK 快速集成 ====== | ====== iOS SDK 快速集成 ====== | ||
- | 在您阅读此文档时,我们假定您已经具备了基础的 iOS 应用开发经验,并能够理解相关基础概念,SDK 支持 **iOS8** 及以上 iOS 版本。 | + | 在您阅读此文档时,我们假定您已经具备了基础的 iOS 应用开发经验,并能够理解相关基础概念,最新版本的SDK 只支持 **iOS9** 及以上 iOS 系统版本。 |
**注:**此文档对之前的文档进行了优化,结构更清晰,帮助您更快的集成环信 iOS SDK,且对UI进行了改版优化。如果您已集成环信 iOS SDK ,并习惯于之前文档的结构,希望再次了解其集成方式,可参考之前的[[im:ios:sdk:import|旧文档]]。 | **注:**此文档对之前的文档进行了优化,结构更清晰,帮助您更快的集成环信 iOS SDK,且对UI进行了改版优化。如果您已集成环信 iOS SDK ,并习惯于之前文档的结构,希望再次了解其集成方式,可参考之前的[[im:ios:sdk:import|旧文档]]。 | ||
+ | |||
+ | ''特殊提示:如果使用的是xcode11打包,那么需要先将环信SDK内的模拟器框架去掉,否则会报"IPA processing failed | ||
+ | "的错误。'' (如何剔除SDK内的模拟器框架,见iOS SDK 快速集成中的'集成动态库上传AppStore') | ||
---- | ---- | ||
行 12: | 行 16: | ||
Appkey:一个 APP 的唯一标识 | Appkey:一个 APP 的唯一标识 | ||
- | 在创建好的应用内注册两个 IM 用户(也可以称为环信 id),例如: 账号:user1,密码:123 ; 账号:user2,密码:123,用来通过 SDK 登录环信服务器,收发消息测试。 | ||
IM 用户:一个 appkey 下的唯一标识用户,用来登录环信服务器进行收发消息的用户。 | IM 用户:一个 appkey 下的唯一标识用户,用来登录环信服务器进行收发消息的用户。 | ||
+ | 可以在创建好的应用内注册两个 IM 用户(也可以称为环信 id),例如: 账号:user1,密码:123 ; 账号:user2,密码:123,用来通过 SDK 登录环信服务器,收发消息测试。 | ||
行 66: | 行 70: | ||
环信 SDK 支持**pod 方式导入**,**手动导入**两种方式任选其一即可,下面分别介绍两种导入方式。 | 环信 SDK 支持**pod 方式导入**,**手动导入**两种方式任选其一即可,下面分别介绍两种导入方式。 | ||
+ | ''从3.6.0版本开始,sdk只支持ios9.0及以上版本。'' | ||
==== Pod 导入SDK ==== | ==== Pod 导入SDK ==== | ||
- | 推荐使用 ''Cocoapods'' 集成环信 SDK。 Cocoapods 提供了一个简单的依赖管理系统,避免手动导入产生的错误(首先需要确认已经安装了 Cocoapods )。 | + | 推荐使用 ''Cocoapods'' 集成环信 SDK。 Cocoapods 提供了一个简单的依赖管理系统,避免手动导入产生的错误(首先需要确认已经安装了 Cocoapods,如果没有安装过Cocoapods,参考安装使用指南:https://www.cnblogs.com/wangluochong/p/5567082.html)。 |
<code> | <code> | ||
行 90: | 行 95: | ||
</code> | </code> | ||
+ | 执行完pod install,打开工程目录,找到.xcworkspace文件运行即可。 | ||
---- | ---- | ||
==== 手动导入 SDK ==== | ==== 手动导入 SDK ==== | ||
- | [[https://download-sdk.oss-cn-beijing.aliyuncs.com/downloads/iOS_IM_SDK_V3.5.3.zip|下载环信demo]] | + | [[http://www.easemob.com/download/im|下载环信demo]] |
行 117: | 行 123: | ||
=== 设置工程属性 === | === 设置工程属性 === | ||
+ | ''Xcode 11''版本以下的配置(不包含Xcode 11) | ||
向 General → Embedded Binaries 中添加依赖库。 | 向 General → Embedded Binaries 中添加依赖库。 | ||
{{:im:ios:sdk:依赖库.png?direct|}} | {{:im:ios:sdk:依赖库.png?direct|}} | ||
+ | ''Xcode 11''版本的配置 | ||
+ | 向 General → Frameworks,Libraries,and Embedded Binaries 中添加依赖库。 | ||
+ | - 注意要将'Do Not Embed'改成'Embed & Sign' | ||
+ | {{:im:ios:sdk:fc574fc2-6514-4cbf-8945-8d3e55a6dfb5.jpg?600|}} | ||
---- | ---- | ||
行 278: | 行 289: | ||
==== 登录环信服务器 ==== | ==== 登录环信服务器 ==== | ||
+ | 建议使用异步登录方法,防止网络不好的情况下,出现卡UI主线程的情况出现。 | ||
<code> | <code> | ||
// 传入在应用(appkey)下注册的IM用户user1,密码123,用于登录环信服务器 | // 传入在应用(appkey)下注册的IM用户user1,密码123,用于登录环信服务器 | ||
- | EMError *error = [[EMClient sharedClient] loginWithUsername:@"user1" password:@"123"]; | + | |
- | if (!error) { | + | [[EMClient sharedClient] loginWithUsername:@"user1" password:@"123" completion:^(NSString *aUsername, EMError *aError) { |
- | NSLog(@"登录成功"); | + | if (!aError) { |
- | } | + | NSLog(@"登录成功"); |
+ | } else { | ||
+ | NSLog(@"登录失败的原因---%@", aError.errorDescription); | ||
+ | } | ||
+ | }]; | ||
</code> | </code> | ||
行 377: | 行 392: | ||
由于 iOS 编译的特殊性,为了方便开发者使用,我们将 ''i386'', ''x86_64'', ''armv7'', ''arm64'' 几个平台都合并到了一起,所以使用动态库上传 appstore 时需要将 ''i386'' , ''x86_64'' 两个平台删除后,才能正常提交审核\\ | 由于 iOS 编译的特殊性,为了方便开发者使用,我们将 ''i386'', ''x86_64'', ''armv7'', ''arm64'' 几个平台都合并到了一起,所以使用动态库上传 appstore 时需要将 ''i386'' , ''x86_64'' 两个平台删除后,才能正常提交审核\\ | ||
- | 在 SDK 当前路径下执行以下命令删除i386, x86_64两个平台\\ | + | 首先将SDK进行备份,因为剔除过SDK的项目只能真机运行,要想继续模拟器运行,要换回未剔除的SDK。\\ |
- | bak 文件是备份目录,上传appstore之后需要替换回 bak 目录下的 SDK\\ | + | 然后进入到Launchpad中,找到其他---打开终端,然后cd到SDK的所在目录。\\ |
+ | 简单的方式就是找到项目中的环信SDK,然后终端先输入cd,然后按空格键,将环信SDK拖拽到终端内,会自动生成SDK的路径,然后环信SDK名称.framework删除掉,不要cd到环信SDK,只cd到SDK所在的目录下即可。 | ||
+ | |||
+ | 示例:\\ | ||
+ | 比如环信SDK的路径是\\ | ||
+ | /Users/easemob-dn0164/Desktop/iOS_IM_SDK_V3.6.0/HyphenateFullSDK/Hyphenate.framework\\ | ||
+ | 那么只需要cd到\\ | ||
+ | /Users/easemob-dn0164/Desktop/iOS_IM_SDK_V3.6.0/HyphenateFullSDK/\\ | ||
+ | 就可以了。 | ||
+ | |||
+ | 后续在 SDK 当前路径下执行以下命令删除i386, x86_64两个平台\\ | ||
实时音视频版本''Hyphenate.framework'' | 实时音视频版本''Hyphenate.framework'' | ||
<code> | <code> | ||
- | mkdir ./bak | + | 【首先进入Hyphenate.framework所在目录】 |
- | cp -r Hyphenate.framework ./bak | + | // 移除支持x86_64,i386的二进制文件 |
- | lipo Hyphenate.framework/Hyphenate -thin armv7 -output Hyphenate_armv7 | + | lipo Hyphenate.framework/Hyphenate -remove x86_64 -remove i386 -output Hyphenate |
- | lipo Hyphenate.framework/Hyphenate -thin arm64 -output Hyphenate_arm64 | + | //替换framwork内部二进制文件 |
- | lipo -create Hyphenate_armv7 Hyphenate_arm64 -output Hyphenate | + | mv Hyphenate Hyphenate.framework/Hyphenate |
- | mv Hyphenate Hyphenate.framework/ | + | //查看剥离后的二进制文件支持的CPU架构,如果显示armv7 arm64,就完成剥离,可上传AppStore |
+ | lipo -info Hyphenate.framework/Hyphenate | ||
</code> | </code> | ||
不包含实时音视频版本 ''HyphenateLite.framework'' | 不包含实时音视频版本 ''HyphenateLite.framework'' | ||
<code> | <code> | ||
- | mkdir ./bak | + | 【首先进入HyphenateLite.framework所在目录】 |
- | cp -r HyphenateLite.framework ./bak | + | // 移除支持x86_64,i386的二进制文件 |
- | lipo HyphenateLite.framework/HyphenateLite -thin armv7 -output HyphenateLite_armv7 | + | lipo HyphenateLite.framework/HyphenateLite -remove x86_64 -remove i386 -output HyphenateLite |
- | lipo HyphenateLite.framework/HyphenateLite -thin arm64 -output HyphenateLite_arm64 | + | //替换framwork内部二进制文件[记得备份] |
- | lipo -create HyphenateLite_armv7 HyphenateLite_arm64 -output HyphenateLite | + | mv HyphenateLite HyphenateLite.framework/HyphenateLite |
- | mv HyphenateLite HyphenateLite.framework/ | + | //查看剥离后的二进制文件支持的CPU架构,如果显示armv7 arm64,就完成剥离,可上传AppStore |
+ | lipo -info HyphenateLite.framework/HyphenateLite | ||
</code> | </code> | ||
+ | ===== DEMO 体验 ===== | ||
+ | [[https://pan.baidu.com/s/1LurYGr81Dt8G_W-UzlNm-w |下载地址]],提取码 **ehil** | ||
+ | |||
+ | **注:**此 Demo 为精简版 Demo,但已涵盖了主要功能。如需更全面的功能,请前往[[http://www.easemob.com/download/im|下载页]] | ||
+ | |||
---- | ---- |