环信即时通讯 IM iOS 快速开始

大约 3 分钟

环信即时通讯 IM iOS 快速开始

本文介绍如何快速集成环信即时通讯 IM iOS SDK 实现单聊。

实现原理

下图展示在客户端发送和接收一对一文本消息的工作流程。

img

前提条件

1. 准备开发环境

创建 Xcode 项目

参考以下步骤在 Xcode 中创建一个 iOS 平台下的 Single View App,项目设置如下:

  • Product Name 设为 HyphenateChatQuickstart
  • Organization Identifier 设为 hyphenatechat
  • User Interface 选择 Storyboard
  • Language 选择 Objective-C

2. 集成 SDK

SDK 支持 CocoaPods 导入手动导入两种方式。

方法一:使用 CocoaPods 集成 SDK。

  1. Terminal 里进入项目根目录,并运行 pod init 命令。项目文件夹下会生成一个 Podfile 文本文件。
  2. 打开 Podfile 文件,修改文件为如下内容:
# platform :ios, '10.0'

 target 'EMChatQuickstart' do
     pod 'HyphenateChat'
 end
  1. 运行 pod update 命令更新本地库版本。
  2. 运行 pod install 命令安装 HyphenateChat SDK。成功安装后,Terminal 中会显示 Pod installation complete!,此时项目文件夹下会生成一个 workspace 文件。

国内开发者如果遇到网络问题导致 pod 命令无法执行,可使用国内镜像源,例如 Gitee 镜像源open in new windowTUNA 镜像源open in new window

方法二:手动导入 SDK v3.8.9.1 及以上版本

  1. 下载最新版的 HyphenateChat iOS SDKopen in new window 并解压。
  2. 复制 SDK 包中的 HyphenateChat.framework 至项目路径下。
  3. 打开 Xcode,进入 TARGETS > Project Name > General > Frameworks, Libraries, and Embedded Content菜单。
  4. 点击 + > Add Other… > Add Files 添加对应动态库,并确保添加的动态库 Embed 属性设置为 Embed & Sign

添加完成后,项目会自动链接所需系统库。

3.初始化 SDK

在工程的 AppDelegate 中的以下方法中,调用 SDK 对应方法。

(BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
    // appkey 替换成你在环信即时通讯 IM 管理后台注册应用中的 App Key
    EMOptions *options = [EMOptions optionsWithAppkey:@"<#appkey#>"];
    // apnsCertName是证书名称,可以先传 nil,等后期配置 APNs 推送时在传入证书名称
    options.apnsCertName = nil;
    [[EMClient sharedClient] initializeSDKWithOptions:options];
    return YES;
}

4.创建账号

  1. 环信即时通讯控制台open in new window首页的应用列表中,在目标应用的 操作 栏中点击 管理

  2. 在环信即时通讯云的左侧导航栏中,选择应用概览 > 用户认证

  3. 用户认证页面,点击创建IM用户按钮,在弹出的对话框中填写用户 ID 和密码,然后点击 保存

img

创建用户后,你可以查看用户 token、设置 token 有效时间、重置密码、查询用户以及删除用户。

在生产环境中,为了安全考虑,你需要在你的应用服务器集成获取 App Token API获取用户 Token API 实现获取 Token 的业务逻辑,使你的用户从你的应用服务器获取 Token。

// 异步方法
[[EMClient sharedClient] registerWithUsername:@"username"
                                         password:@"your password"
                                       completion:^(NSString *aUsername, EMError *aError) {
                                   }];

5. 登录账号

利用创建的用户名和密码登录环信 IM。

[[EMClient sharedClient] loginWithUsername:@"username"
                                     password:@"your password"
                                   completion:^(NSString *aUsername, EMError *aError) {

}];

6. 发送消息

利用创建的用户名和密码登录环信 IM,向对端用户发送消息。在下面示例中,向 user 2 发送文本消息。

// 创建消息
EMTextMessageBody* textBody = [[EMTextMessageBody alloc] initWithText:@"hello"];
EMChatMessage *message = [[EMChatMessage alloc] initWithConversationID:@"user2"
                                                              from:@"user1"
                                                                to:@"user2"
                                                              body:textBody
                                                               ext:@{}];
// 发送消息
[[EMClient sharedClient].chatManager sendMessage:message progress:nil completion:^(EMChatMessage *message, EMError *error) {}];