iOS 集成网易云信IM

云信官方文档在这

看官方文档的时候,版本选择最新的V10。

1、CocoPods集成

objectivec 复制代码
pod 'NIMSDK_LITE'

2、AppDelegate.m添加头文件

objectivec 复制代码
#import <NIMSDK/NIMSDK.h>

3、初始化

objectivec 复制代码
NIMSDKOption *mrnn_option = [NIMSDKOption optionWithAppKey:@"6f6568e354026d2d658a7bf5a75cbeac"];
mrnn_option.apnsCername = @"your apns certificate";
mrnn_option.pkCername = @"your push kit certificate";
    
// 初始化配置
V2NIMSDKOption *mrnn_v2Option = [[V2NIMSDKOption alloc] init];
//激活 V10 所有 API,默认使用 V10 的登录接口登录 IM
mrnn_v2Option.useV1Login = NO;
//若仍使用 V9 的登录接口登录 IM
//v2Option.useV1Login = YES;
//是否开启云端服务功能,默认使用本地会话
//    v2Option.enableV2CloudConversation = NO;
//若需要使用云端会话
//v2Option.enableV2CloudConversation = YES;
[[NIMSDK sharedSDK] registerWithOptionV2:mrnn_option v2Option:mrnn_v2Option];

4、登录IM

objectivec 复制代码
[[[NIMSDK sharedSDK] v2LoginService] login:@"后端返回的userid" token:@"后端返回的imtoken" option:nil success:^{
    NSLog(@"登录成功");
} failure:^(V2NIMError * _Nonnull error) {
    NSLog(@"登录失败:%@",error);
}];

5、获取未读消息数

objectivec 复制代码
NSInteger Count = [[NIMSDK sharedSDK].v2LocalConversationService getTotalUnreadCount];

6、获取IM消息列表

objectivec 复制代码
[[NIMSDK sharedSDK].v2LocalConversationService getConversationList:0 limit:20 success:^(V2NIMLocalConversationResult * _Nonnull result) {

} failure:^(V2NIMError * _Nonnull error) {

}];

7、根据用户id查询用户信息

objectivec 复制代码
[[[NIMSDK sharedSDK] v2UserService] getUserList:idArr success:^(NSArray<V2NIMUser *> * _Nonnull result) {
            
} failure:^(V2NIMError * _Nonnull error) {

}];

8、对一个用户发送IM消息

objectivec 复制代码
V2NIMMessage *v2Message = [V2NIMMessageCreator createTextMessage:@"hello"];
        
V2NIMSendMessageParams *params = [[V2NIMSendMessageParams alloc] init];
        
NSString *idStr = [V2NIMConversationIdUtil p2pConversationId:@"10000"];
// 发送消息
[[[NIMSDK sharedSDK] v2MessageService] sendMessage:v2Message conversationId:idStr params:params success:^(V2NIMSendMessageResult * _Nonnull result) {
      NSLog(@"发送消息成功");
} failure:^(V2NIMError * _Nonnull error) {
            
      NSLog(@"发送消息结果:%@==%@",error,idStr);
} progress:^(NSUInteger pro) {
            
}];

9、消息列表代理方法

objectivec 复制代码
#import <NIMSDK/NIMSDK.h>

//代理
<NIMConversationManagerDelegate,V2NIMLocalConversationListener>

//添加会话监听
[[NIMSDK sharedSDK].v2LocalConversationService addConversationListener:self];

//移除会话监听
[[NIMSDK sharedSDK].v2LocalConversationService removeConversationListener:self];


///代理方法-部分

//会话数据云端同步失败,可能为如下原因:网络连接断开;服务异常。可以根据相应错误码确定相关错误原因
- (void)onSyncFailed:(V2NIMError *)error
{
}
//创建会话触发
- (void)onConversationCreated:(V2NIMLocalConversation *)conversation
{

}
//被删除的会话ID列表,可以根据该ID列表移除界面上展示的会话数据
- (void)onConversationDeleted:(NSArray<NSString *> *)conversationIds
{

}

#pragma mark - 会话内容或属性变更时触发
- (void)onConversationChanged:(NSArray<V2NIMLocalConversation *> *)conversationList
{

}
#pragma mark - 总未读数变更触发
- (void)onTotalUnreadCountChanged:(NSInteger)unreadCount
{

}

10、跳转到消息聊天室

objectivec 复制代码
P2PChatViewController *p2pChatVC = [[P2PChatViewController alloc] initWithConversationId:model.conversationId anchor:nil];
p2pChatVC.userid = model.accountId;
p2pChatVC.name = model.name;
p2pChatVC.avatar = model.avatar;
[self.navigationController pushViewController:p2pChatVC animated:true];

11、获取IM登录状态

objectivec 复制代码
V2NIMLoginStatus status = [[[NIMSDK sharedSDK] v2LoginService] getLoginStatus];
switch (status) {
    case V2NIM_LOGIN_STATUS_LOGOUT:
        NSLog(@"login status = LOGOUT");
        break;
    case V2NIM_LOGIN_STATUS_LOGINING:
        NSLog(@"login status = logining");
        break;
    case V2NIM_LOGIN_STATUS_LOGINED:
        NSLog(@"login status = logined");
        break;
    default:
        NSLog(@"login status = %ld", status);
}

结语:至此,网易云信IM集成完成!不懂的可回复,看到了就回!

​​​​​​​ iOS 集成网易云信的音视频呼叫组件-CSDN博客

相关推荐
游戏开发爱好者84 小时前
日常开发与测试的 App 测试方法、查看设备状态、实时日志、应用数据
android·ios·小程序·https·uni-app·iphone·webview
黑码哥5 小时前
ViewHolder设计模式深度剖析:iOS开发者掌握Android列表性能优化的实战指南
android·ios·性能优化·跨平台开发·viewholder
2501_915106326 小时前
app 上架过程,安装包准备、证书与描述文件管理、安装测试、上传
android·ios·小程序·https·uni-app·iphone·webview
2501_915106327 小时前
使用 Sniffmaster TCP 抓包和 Wireshark 网络分析
网络协议·tcp/ip·ios·小程序·uni-app·wireshark·iphone
熊猫钓鱼>_>7 小时前
移动端开发技术选型报告:三足鼎立时代的开发者指南(2026年2月)
android·人工智能·ios·app·鸿蒙·cpu·移动端
徐同保1 天前
通过ip访问nginx的服务时,被第一个server重定向了,通过设置default_server解决这个问题
ios·iphone
2501_915918411 天前
在 iOS 环境下查看 App 详细信息与文件目录
android·ios·小程序·https·uni-app·iphone·webview
2501_916007471 天前
没有 Mac 用户如何上架 App Store,IPA生成、证书与描述文件管理、跨平台上传
android·macos·ios·小程序·uni-app·iphone·webview
夏幻灵2 天前
HTTPS全面解析:原理、加密机制与证书体
ios·iphone
TheNextByte12 天前
如何在iPhone上恢复已删除的笔记的综合指南
笔记·ios·iphone