差别

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

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
后一修订版 两侧同时换到之后的修订记录
im:ios:sdk:prepare [2019/06/21 06:56]
huanxinfudh [注册并创建应用]
im:ios:sdk:prepare [2020/03/19 02:53]
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'​)
 ---- ----
  
行 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>​
  
行 375: 行 390:
 ===== 集成动态库上传AppStore ===== ===== 集成动态库上传AppStore =====
  
-由于 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 体验 ===== ===== DEMO 体验 =====
 [[https://​pan.baidu.com/​s/​1LurYGr81Dt8G_W-UzlNm-w |下载地址]],提取码 **ehil** [[https://​pan.baidu.com/​s/​1LurYGr81Dt8G_W-UzlNm-w |下载地址]],提取码 **ehil**