实现单聊/群聊消息收发

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

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

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

群聊消息收发需要先进入群组,后续流程与单聊消息收发相同。群组相关操作请参考群组管理

使用前准备

  • 已在云信控制台创建应用,获取 App Key。
  • 注册云信 IM 账号,获取 IM 账号和 token。
  • 开发环境需满足 iOS 9.0 及以上版本,可使用 iPhone/iPad 真机或模拟器。

实现流程

流程概览

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

uml diagram

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

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

步骤 1:集成 SDK

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

  1. 更新日志查看 SDK 的最新版本,并查询本地仓库中对应的版本是否为最新版本。

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

    pod search NIMSDK_LITE   //本地仓库中查询 NIMSDK_LITE 信息
    pod repo update          //更新本地仓库
    
  2. 在项目根目录下的 Podfile 文件中写入以下内容。

    pod 'NIMSDK_LITE' 
    
  3. 执行以下命令安装 SDK。

    pod install
    

步骤 2:初始化 SDK

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

  1. 在项目文件中引入头文件 NIMSDK.h

    #import <NIMSDK/NIMSDK.h>
    
  2. 调用 registerWithOptionV2 方法初始化 SDK,推荐在应用程序启动时初始化。初始化成功后,即可使用 V10 所有的 API。

    objcNIMSDKOption *option = [NIMSDKOption optionWithAppKey:appKey];
    option.apnsCername = @"your apns certificate";
    option.pkCername = @"your push kit certificate";
    // 配置 useV1Login
    V2NIMSDKOption *v2Option = [[V2NIMSDKOption alloc] init];
    //激活 V10 所有 API,默认使用 V10 的登录接口登录 IM
    v2Option.useV1Login = NO;
    //若仍使用 V9 的登录接口登录 IM
    //v2Option.useV1Login = YES;
    [[NIMSDK sharedSDK] registerWithOptionV2:option v2Option:v2Option];
    

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

步骤 3:登录 IM

客户端用户在使用云信即时通讯功能前需要先登录云信 IM。

调用 V2NIMLoginService#login方法进行登录。以静态 Token 登录方式为例,示例代码如下:

objective-c- (id<V2NIMLoginService>)getV2LoginService {
    return [[NIMSDK sharedSDK] v2LoginService];
}

- (void)login {
    NSString *accountId = @"accountId";
    NSString *token = @"token";
    id<V2NIMLoginService> service = [self getV2LoginService];
    [service login:accountId
             token:token
            option:nil
           success:^{
        NSLog(@"login succ");
    } failure:^(V2NIMError * _Nonnull error) {
        NSLog(@"login fail: error = %@", error);
    }];
}

其他登录方式请参见登录及登出 IM

步骤 4:单聊消息收发

本节以用户 A 和用户 B 的消息交互为例,介绍快速实现单聊消息收发的流程。

  1. 用户 B 调用 addMessageListener 方法注册消息监听器,监听消息接收回调事件 onReceiveMessages。示例代码如下:

    [[[NIMSDK sharedSDK] v2MessageService] addMessageListener:listener];
    - (void)onReceiveMessages:(NSArray <V2NIMMessage *> *)messages;
    
  2. 用户 A 调用 createTextMessage 方法构建文本消息并调用 sendMessage 方法将消息发送给 B。示例代码如下:

    // 以创建一条文本消息为例
    V2NIMMessage *message = [V2NIMMessageCreator createTextMessage:@"v2 message"];
    V2NIMSendMessageParams *params = [[V2NIMSendMessageParams alloc] init];
    // 发送消息
    [[[NIMSDK sharedSDK] v2MessageService] sendMessage:message 
                                    conversationId:@"conversationId"
                                            params:params
                                        success:^(V2NIMSendMessageResult * _Nonull result) {
                                            // 发送成功回调
                                            }
                                        failure:^(V2NIMError * _Nonnull error) {
                                            // 发送失败回调, error 包含错误原因
                                            }
    }];           
    

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

  3. 用户 B 通过 onReceiveMessages 回调收到文本消息。

后续步骤

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

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