实现单聊/群聊消息收发
更新时间: 2024/08/22 17:21:31
网易云信 IM 即时通讯服务提供一整套即时通讯基础能力,助您快速实现多样化的即时通讯场景。
本文主要介绍通过集成 NetEase IM SDK(NIM SDK)并调用 API,快速实现单聊/群聊消息收发功能。
群聊消息收发需要先进入群组,后续流程与单聊消息收发相同。群组相关操作请参考群组管理。
使用前准备
- 已在云信控制台创建应用,获取 App Key。
- 已注册云信 IM 账号,获取 IM 账号和 token。
- 开发环境需满足 iOS 9.0 及以上版本,可使用 iPhone/iPad 真机或模拟器。
实现流程
流程概览
实现单聊消息收发的流程,可分为下图所示的 4 大步骤。
步骤 0:新建项目(可选)
此步骤以新建新项目为例,若集成到已有项目,可忽略此步骤
1. 启动 Xcode,在左上角选择File > New > Project。2. 在出现的工作表中,选择 iOS 平台,并在 Application 下选择 App。
3. 配置新建项目,完成后,单击 Next。
必须填写 Product Name 和 Organization Identifier。
4. 选择项目存储路径,单击 Create 创建项目。
步骤 1:集成 SDK
本文主要介绍在 CocoaPods 中添加远程依赖项的集成方式。手动集成方式请参见集成 SDK。
-
在更新日志查看 SDK 的最新版本,并查询本地仓库中对应的版本是否为最新版本。
若不是最新版本,建议先更新本地仓库,以确保可以集成最新的 SDK 版本。
pod search NIMSDK_LITE //本地仓库中查询 NIMSDK_LITE 信息 pod repo update //更新本地仓库
-
在项目根目录下的
Podfile
文件中写入以下内容。pod 'NIMSDK_LITE'
-
执行以下命令安装 SDK。
pod install
步骤 2:初始化 SDK
将 SDK 集成到客户端后,需要先完成 SDK 的初始化才能使用其他功能。
-
在项目文件中引入头文件
NIMSDK.h
。#import <NIMSDK/NIMSDK.h>
-
调用
registerWithOptionV2
方法初始化 SDK,推荐在应用程序启动时初始化。初始化成功后,即可使用 V10 所有的 API。objc
NIMSDKOption *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 的消息交互为例,介绍快速实现单聊消息收发的流程。
-
用户 B 调用
addMessageListener
方法注册消息监听器,监听消息接收回调事件onReceiveMessages
。示例代码如下:[[[NIMSDK sharedSDK] v2MessageService] addMessageListener:listener]; - (void)onReceiveMessages:(NSArray <V2NIMMessage *> *)messages;
-
用户 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 支持多种消息类型,包括文本消息、图片消息、语音消息、视频消息、文件消息、地理位置消息、提示消息、通知消息以及自定义消息,具体请参见消息收发。
-
用户 B 通过
onReceiveMessages
回调收到文本消息。
后续步骤
为保障通信安全,如果您在调试环境中的使用的是云信控制台生成的测试用 IM 账号 和 token
,请确保在后续的正式生产环境中,将其替换为通过IM 服务端 API生成的正式 IM 账号和 token
。