差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
im:ios:sdk:import [2018/12/03 03:36] liulj [视频教程] |
im:ios:sdk:import [2019/04/16 09:51] jk |
||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== 集成 iOS SDK 前的准备工作 ====== | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ===== 注册环信开发者账号并创建后台应用 ===== | ||
+ | |||
+ | 详细操作步骤见[[im:quickstart:guide:experience|开发者注册及管理后台]]。 | ||
+ | |||
+ | ===== 制作并上传推送证书 ===== | ||
+ | |||
+ | 如果不需要实现离线推送功能,请忽略这步。 | ||
+ | |||
+ | ==== 制作推送证书 ==== | ||
+ | |||
+ | 第 1 步:打开[[https://developer.apple.com/|苹果开发者网站]]。 | ||
+ | |||
+ | {{ :im:300iosclientintegration:ios_apns_1_v1.jpg?nolinK|苹果开发者网站}} | ||
+ | |||
+ | 第 2 步:从 Account 进入 Certificates, Identifiers & Profiles。 | ||
+ | |||
+ | {{ :im:300iosclientintegration:ios_apns_2_v1.jpg?nolinK|Member Center}} | ||
+ | |||
+ | 第 3 步:选择要制作的推送证书。 | ||
+ | |||
+ | {{:im:300iosclientintegration:ios_apns_3_v1.jpg?nolink|选择推送证书}} | ||
+ | |||
+ | * 对于开发环境(sandbox)的推送证书,请选择 Apple Push Notification service SSL (Sandbox) | ||
+ | * 对于生产环境(production)的推送证书,请选择 Apple Push Notification service SSL (Sandbox & Production) | ||
+ | |||
+ | 注意:环信暂时不支持Apple Push Notification Authentication Key (Sandbox & Production) | ||
+ | |||
+ | 第 4 步:选择对应的 APP ID(环信示例使用 ChatDemoUI,所以此处选择 com.easemob.enterprise.demo.ui)。 | ||
+ | |||
+ | {{:im:300iosclientintegration:ios_apns_4_v1.jpg?nolink|选择APP ID}} | ||
+ | |||
+ | 第 5 步:根据 Certificate Assistant 的提示,创建 Certificate Request。 | ||
+ | |||
+ | {{:im:300iosclientintegration:ios_apns_5_v1.jpg?nolink|创建Certificate Request}} | ||
+ | |||
+ | 第 6 步:上传上一步中创建的 Certificate Request 文件。 | ||
+ | |||
+ | {{:im:300iosclientintegration:ios_apns_6_v1.jpg?nolink|上传Certificate Request}} | ||
+ | |||
+ | 第 7 步:上传完毕后,推送证书就被正确生成了,之后我们下载下来这个证书,并双击导入系统。 | ||
+ | |||
+ | {{:start:300iosclientintegration:ios_apns_7.png?nolink|下载推送证书}} | ||
+ | |||
+ | ==== 上传推送证书 ==== | ||
+ | |||
+ | 第 1 步:打开 Application –> Utilities –> Keychain Access -> Certificates 应用,我们会看到有刚刚我们制作好的推送证书。 | ||
+ | |||
+ | {{:start:300iosclientintegration:ios_apns_8.png?nolink|导出推送证书}} | ||
+ | |||
+ | 导出并保存为 P12 格式并设置密码。**(本步导出证书使用的电脑务必与“第 5 步:创建 Certificate Request”时使用的是一台电脑。)** | ||
+ | |||
+ | 第 2 步:登录[[http://console.easemob.com|环信管理后台]]。 | ||
+ | |||
+ | {{:im:ios:sdk:注册.png?nolink|}} | ||
+ | |||
+ | 第 3 步:输入了正确的账号后,选择对应的 APP(环信示例为 easemob,点击 easemob)。 | ||
+ | |||
+ | {{:im:ios:sdk:3_.png?direct|}} | ||
+ | |||
+ | 第 4 步:填写证书名称。 | ||
+ | |||
+ | 这个名称是个有意义的名字,对推送直接相关,稍后会在源码的修改里继续用到这个名字。上传之前导出的 P12 文件,密码则为此 P12 文件的密码,证书类型请根据具体情况选择。 | ||
+ | |||
+ | (创建的是 Apple Push Notification service SSL Sandbox 请选择开发环境;Apple Push Notification service SSL Production 请选择生产环境。) | ||
+ | |||
+ | 第 5 步:上传证书。 | ||
+ | |||
+ | {{:im:ios:sdk:上传证书.png?nolink|}} | ||
+ | |||
+ | 注意:请正确选择是生产环境还是测试环境的证书,应用包名指的是Bundle Id。 | ||
+ | |||
+ | |||
====== iOS SDK 介绍及导入 ====== | ====== iOS SDK 介绍及导入 ====== | ||
行 135: | 行 211: | ||
mv HyphenateLite HyphenateLite.framework/ | mv HyphenateLite HyphenateLite.framework/ | ||
</code> | </code> | ||
+ | |||
+ | ====== iOS SDK 快速集成 ====== | ||
+ | |||
+ | ===== 快速集成单聊功能 ===== | ||
+ | |||
+ | === 第 1 步:集成环信SDK === | ||
+ | |||
+ | 方式一: | ||
+ | |||
+ | 推荐使用Cocoapods集成环信SDK。Cocoapods提供了一个简单的依赖管理系统,避免手动导入产生的错误(首先需要确认已经安装了Cocoapods)。 | ||
+ | |||
+ | <code> | ||
+ | sudo gem install cocoapods | ||
+ | pod setup | ||
+ | </code> | ||
+ | |||
+ | 在Xcode项目的根目录下,新建一个空文件,命名为Podfile,向此文件添加以下行: | ||
+ | |||
+ | <code> | ||
+ | #Lite版本 | ||
+ | pod 'HyphenateLite' | ||
+ | #Full版本 | ||
+ | pod 'Hyphenate' | ||
+ | </code> | ||
+ | |||
+ | 在Podfile目录下,执行以下指令: | ||
+ | |||
+ | <code> | ||
+ | pod install | ||
+ | </code> | ||
+ | |||
+ | 方式二: | ||
+ | |||
+ | 在环信官网下载SDK,[[http://www.easemob.com/download/im|点击下载]] | ||
+ | |||
+ | 手动将SDK导入到自己的工程中[[im:ios:sdk:import|(集成介绍)]] | ||
+ | |||
+ | === 第 2 步:初始化环信SDK === | ||
+ | |||
+ | 以Cocoapods方式集成SDK,需要引入相关头文件 | ||
+ | |||
+ | <code objc> | ||
+ | //Lite版本 | ||
+ | #import <HyphenateLite/HyphenateLite.h> | ||
+ | //Full版本 | ||
+ | #import <Hyphenate/Hyphenate.h> | ||
+ | </code> | ||
+ | |||
+ | 在工程的 AppDelegate 中的以下方法中,调用 SDK 对应方法 | ||
+ | |||
+ | <code objc> | ||
+ | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions | ||
+ | { | ||
+ | //AppKey:注册的AppKey,详细见下面注释。 | ||
+ | //apnsCertName:推送证书名(不需要加后缀),详细见下面注释。 | ||
+ | EMOptions *options = [EMOptions optionsWithAppkey:@"douser#istore"]; | ||
+ | options.apnsCertName = @"istore_dev"; | ||
+ | [[EMClient sharedClient] initializeSDKWithOptions:options]; | ||
+ | |||
+ | return YES; | ||
+ | } | ||
+ | |||
+ | // APP进入后台 | ||
+ | - (void)applicationDidEnterBackground:(UIApplication *)application | ||
+ | { | ||
+ | [[EMClient sharedClient] applicationDidEnterBackground:application]; | ||
+ | } | ||
+ | |||
+ | // APP将要从后台返回 | ||
+ | - (void)applicationWillEnterForeground:(UIApplication *)application | ||
+ | { | ||
+ | [[EMClient sharedClient] applicationWillEnterForeground:application]; | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | === 第 3 步:登录环信 === | ||
+ | |||
+ | 登录:调用 SDK 的登录接口进行的操作。 | ||
+ | |||
+ | <code objc> | ||
+ | [[EMClient sharedClient] loginWithUsername:@"8001" | ||
+ | password:@"111111" | ||
+ | completion:^(NSString *aUsername, EMError *aError) { | ||
+ | if (!aError) { | ||
+ | NSLog(@"登录成功"); | ||
+ | } else { | ||
+ | NSLog(@"登录失败"); | ||
+ | } | ||
+ | }]; | ||
+ | </code> | ||
+ | |||
+ | === 第 4 步:导入EaseUI === | ||
+ | |||
+ | 方式一: | ||
+ | |||
+ | 下载Release版本SDK,在自己的项目中导入EaseUI整个目录 | ||
+ | |||
+ | {{:im:300iosclientintegration:ios_quickstart_release_catalog.jpg|}} | ||
+ | |||
+ | 方式二: | ||
+ | 通过cocoapods集成EaseUI | ||
+ | <code> | ||
+ | pod 'EaseUI', :git => 'https://github.com/easemob/easeui-ios-hyphenate-cocoapods.git' | ||
+ | </code> | ||
+ | |||
+ | === 第 5 步:初始化单聊页面 === | ||
+ | |||
+ | <code objc> | ||
+ | //环信ID:@"8001" | ||
+ | //聊天类型:EMConversationTypeChat | ||
+ | EaseMessageViewController *chatController = [[EaseMessageViewController alloc] initWithConversationChatter:@"8001" conversationType:EMConversationTypeChat]; | ||
+ | </code> | ||
+ | |||
+ | [[im:ios:basics:message|消息功能集成详细介绍]] | ||
+ | |||
+ | ===== 快速集成群聊功能 ===== | ||
+ | |||
+ | 首先需要完成快速集成单聊上述步骤。 | ||
+ | |||
+ | === 创建群组 === | ||
+ | |||
+ | <code objc> | ||
+ | EMError *error = nil; | ||
+ | EMGroupOptions *setting = [[EMGroupOptions alloc] init]; | ||
+ | setting.maxUsersCount = 500; | ||
+ | setting.style = EMGroupStylePublicOpenJoin;// 创建不同类型的群组,这里需要才传入不同的类型 | ||
+ | EMGroup *group = [[EMClient sharedClient].groupManager createGroupWithSubject:@"群组名称" description:@"群组描述" invitees:@[@"6001",@"6002"] message:@"邀请您加入群组" setting:setting error:&error]; | ||
+ | if(!error){ | ||
+ | NSLog(@"创建成功 -- %@",group); | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | === 初始化群聊页面 === | ||
+ | |||
+ | <code objc> | ||
+ | //群ID:@"groupId" | ||
+ | //聊天类型:EMConversationTypeGroupChat | ||
+ | EaseMessageViewController *chatController = [[EaseMessageViewController alloc] initWithConversationChatter:@"groupId" conversationType:EMConversationTypeGroupChat]; | ||
+ | </code> | ||
+ | |||
+ | [[im:ios:basics:group|群组功能集成详细介绍]] | ||
+ | |||
+ | ===== 快速集成好友功能 ===== | ||
+ | |||
+ | 首先需要完成快速集成单聊上述步骤。 | ||
+ | |||
+ | === 添加好友 === | ||
+ | |||
+ | <code objc> | ||
+ | [[EMClient sharedClient].contactManager addContact:@"8001" | ||
+ | message:@"我想加您为好友" | ||
+ | completion:^(NSString *aUsername, EMError *aError) { | ||
+ | if (!aError) { | ||
+ | NSLog(@"邀请发送成功"); | ||
+ | } | ||
+ | }]; | ||
+ | |||
+ | //同意好友申请 | ||
+ | [[EMClient sharedClient].contactManager approveFriendRequestFromUser:@"8001" | ||
+ | completion:^(NSString *aUsername, EMError *aError) { | ||
+ | if (!aError) { | ||
+ | NSLog(@"同意好友成功"); | ||
+ | } | ||
+ | }]; | ||
+ | |||
+ | //拒绝好友申请 | ||
+ | [[EMClient sharedClient].contactManager declineFriendRequestFromUser:@"8001" | ||
+ | completion:^(NSString *aUsername, EMError *aError) { | ||
+ | if (!aError) { | ||
+ | NSLog(@"拒绝好友成功"); | ||
+ | } | ||
+ | }]; | ||
+ | </code> | ||
+ | |||
+ | === 删除好友 === | ||
+ | |||
+ | <code objc> | ||
+ | // 删除好友 | ||
+ | [[EMClient sharedClient].contactManager deleteContact:@"8001" | ||
+ | isDeleteConversation: YES | ||
+ | completion:^(NSString *aUsername, EMError *aError) { | ||
+ | if (!aError) { | ||
+ | NSLog(@"删除成功"); | ||
+ | } | ||
+ | }]; | ||
+ | </code> | ||
+ | |||
+ | === 获取好友 === | ||
+ | |||
+ | <code objc> | ||
+ | //从服务器获取所有的好友 | ||
+ | [[EMClient sharedClient].contactManager getContactsFromServerWithCompletion:^(NSArray *aList, EMError *aError) { | ||
+ | if (!aError) { | ||
+ | NSLog(@"获取成功"); | ||
+ | } | ||
+ | }]; | ||
+ | //从数据库获取所有的好友 | ||
+ | NSArray *userlist = [[EMClient sharedClient].contactManager getContacts]; | ||
+ | </code> | ||
+ | |||
+ | [[im:ios:basics:buddy|好友功能集成详细介绍]] | ||
+ | |||
+ | ===== 快速集成演示视频 ===== | ||
+ | |||
+ | [[https://ke.qq.com/webcourse/index.html#cid=320169&term_id=100380031&taid=2357924160922281&vid=z1428vxxdj0|EaseUI集成参考视频]] | ||
+ | |||
+ | [[https://ke.qq.com/webcourse/index.html#cid=320169&term_id=100380031&taid=2357928455889577&vid=w14285asu4n|SDK集成参考视频]] | ||
+ | |||
---- | ---- |