实现单聊消息收发

更新时间: 2024/03/15 16:12:31

网易云信 IM 即时通讯服务提供一整套即时通讯基础能力,助您快速实现多样化的即时通讯场景。

本文主要介绍通过集成 NetEase IM SDK(NIM SDK)并调用 API,快速实现单聊消息收发功能。

  • 群聊消息收发需要先进入群组,后续流程与单聊消息收发相同。
  • 超大群、聊天室和圈组的消息收发,需单独配置。具体实现流程请分别参见超大群聊天室消息收发圈组消息管理

使用前准备

实现流程

流程概览

实现单聊消息收发的流程,可分为下图所示的 4 大步骤。

img

步骤 0:新建项目(可选)

此步骤以新建新项目为例,若集成到已有项目,可忽略此步骤 1. 启动 Xcode,在左上角选择File > New > Project
2. 在出现的工作表中,选择 iOS 平台,并在 Application 下选择 App
3. 配置新建项目,完成后,单击 Next
必须填写 Product NameOrganization Identifier
4. 选择项目存储路径,单击 Create 创建项目。
新建项目

步骤 1:集成 SDK

本文主要介绍在 CocoaPods 中添加远程依赖项的集成方式。手动集成方式请参见 SDK 集成

  1. SDK 下载页面查看 SDK 的最新版本,并查询本地仓库中对应的版本是否为最新版本。

    若不是最新版本,建议先更新本地仓库,以确保可以集成最新的 SDK 版本。

    pod search NIMSDK_LITE   //本地仓库中查询 NIMSDK_LITE 信息
    pod repo update          //更新本地仓库
  1. 在项目根目录下的 Podfile 文件中写入以下内容。
    pod 'NIMSDK_LITE' 
  1. 执行以下命令安装 SDK。
    pod install

步骤 2:初始化 SDK

将 SDK 集成到客户端后,需要先完成 SDK 的初始化才能使用其他功能。

  1. 在项目文件中引入头文件 NIMSDK.h
#import <NIMSDK/NIMSDK.h>
  1. 调用 registerWithOption: 方法初始化 SDK。
objc- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    ...
    //推荐在程序启动的时候初始化 NIMSDK    
    NSString *appKey        = @"your app key";//云信分配的 appKey
    NIMSDKOption *option    = [NIMSDKOption optionWithAppKey:appKey];
    option.apnsCername      = @"your APNs cer name";//APNs 推送证书名
    option.pkCername        = @"your pushkit cer name";//PushKit  推送证书名
    [[NIMSDK sharedSDK] registerWithOption:option];
    ...
}

以上提供了一个简化的初始化示例,更多初始化信息请参见初始化 SDK

步骤 3:登录 IM 服务端

客户端用户在使用云信即时通讯功能前需要先登录云信 IM 服务器。请使用已注册的云信账号进行登录。

调用NIMLoginManagerlogin方法进行登录。示例代码如下:

    NSString *account = @"your account";
    NSString *token   = @"your token";
    [[[NIMSDK sharedSDK] loginManager] login:account
                                    token:token
                                completion:^(NSError *error) {}];

NIM SDK 支持自动重连机制。用户也可以注册监听来实时关注 IM 的登录状态,具体请参见登录章节。

步骤 4:单聊消息收发

本节以用户 A 和用户 B 的消息交互为例,介绍快速实现单聊消息收发的流程。更多消息类型的收发,请参见消息发送

  1. 用户 B 调用 addDelegate: 方法添加委托,注册 onRecvMessages: 回调函数,监听消息接收。示例代码如下:
// 在某处添加代理对象
[NIMSDK sharedSDK].chatManager addDelegate:self];
//...
- (void)onRecvMessages:(NSArray<NIMMessage *> *)messages
{
  //收到消息
}
  1. 用户 A 构建文本消息并调用 sendMessage:toSession:error:方法将消息发送给 B。示例代码如下:
js// 这里主要以发送文本消息为例 
NIMSession *session = [NIMSession session:@"user" type:NIMSessionTypeP2P];// 构造出具体会话:P2P单聊,对方账号为user
NIMMessage *message = [[NIMMessage alloc] init];// 构造出具体消息
message.text        = @"hello";
NSError *error = nil;// 错误反馈对象
[[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:&error];// 发送消息

目前 NIM SDK 支持多种消息类型,包括文本消息、图片消息、语音消息、视频消息、文件消息、地理位置消息、提示消息、通知消息以及自定义消息。具体请参见消息发送

  1. onRecvMessages: 触发回调,用户 B 收到文本消息。

后续步骤

为保障通信安全,如果您在调试环境中的使用的是云信控制台生成的测试用 IM 账号 和 token,请确保在后续的正式生产环境中,将其替换为通过 IM 服务端 API 生成的正式 IM 账号(accid)和 token

此文档是否对你有帮助?
有帮助
去反馈
  • 使用前准备
  • 实现流程
  • 流程概览
  • 步骤 0:新建项目(可选)
  • 步骤 1:集成 SDK
  • 步骤 2:初始化 SDK
  • 步骤 3:登录 IM 服务端
  • 步骤 4:单聊消息收发
  • 后续步骤