当前位置: 首页 > ops >正文

iOS 集成网易云信IM

云信官方文档在这

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

1、CocoPods集成

pod 'NIMSDK_LITE'

2、AppDelegate.m添加头文件

#import <NIMSDK/NIMSDK.h>

3、初始化

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

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

5、获取未读消息数

NSInteger Count = [[NIMSDK sharedSDK].v2LocalConversationService getTotalUnreadCount];

6、获取IM消息列表

[[NIMSDK sharedSDK].v2LocalConversationService getConversationList:0 limit:20 success:^(V2NIMLocalConversationResult * _Nonnull result) {} failure:^(V2NIMError * _Nonnull error) {}];

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

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

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

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、消息列表代理方法

#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、跳转到消息聊天室

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登录状态

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博客

http://www.xdnf.cn/news/9856.html

相关文章:

  • Edge浏览器怎样开启兼容模式
  • t014-项目申报管理系统 【springBoot 含源码】
  • 推荐3个优秀wordpress主题
  • Electron-vite【实战】MD 编辑器 -- 文件列表(含右键快捷菜单,重命名文件,删除本地文件,打开本地目录等)
  • 基于分布式状态机的集装箱智能道口软件架构方法
  • 室内VR全景助力房产营销及装修
  • 机器学习与深度学习05-决策树01
  • 2022 RoboCom 世界机器人开发者大赛-本科组(省赛)解题报告 | 珂学家
  • Telerik生态整合:Kendo UI for Angular组件在WinForms应用中的深度嵌入(一)
  • 直线模组在手术机器人中有哪些技术挑战?
  • “百亿补贴”商家承担比例升至70%-80%,京东外卖家也没“余粮”了?
  • 基于定制开发开源AI智能名片S2B2C商城小程序的大零售渗透策略研究
  • 代码随想录算法训练营 Day60 图论Ⅹ Bellmen_ford 系列算法
  • Visual Studio中的宏变量
  • (ICML-2025) RIFLEx:视频扩散Transformer中长度外推的“免费午餐”
  • NVIDIA英伟达AI图片视频内容描述总结软件describe-anything整合包
  • 十二、FTP服务器配置与应用
  • 【博客系统】博客系统第十一弹:从零开始在 Linux 系统上搭建 Java 部署环境并部署 Web 项目
  • 扫地机产品异物进入吸尘口堵塞异常检测方案
  • 软考-系统架构设计师-第十六章 层次式架构设计理论与实践
  • Dif-Fusion:第一个基于扩散模型实现的红外光与可见光图像融合的论文
  • 【Linux系统移植】Cortex-A8 Linux系统移植(超详细)
  • [250529] CrateDB 5.10.7 发布:一系列重要修复与升级注意事项
  • 实战指南:步进电机规格书参数解析——以28BYJ48为例(不聊原理,只讲应用)
  • 【HarmonyOS 5】UIAbility上下文切换途中造成的Toast提示展示错窗口的解决方案
  • PyTorch中 torch.utils.data.DataLoader 的详细解析和读取点云数据示例
  • 机动车结构化检测算法AI智能分析网关V4打造全场景应用解决方案
  • 从数据持久化到网络通信与OpenCV:Qt应用程序开发的深度探索与实战
  • 从 API 调用到智能 Agent:面向未来产品的插件化 AI 中台设计
  • Android bindservice绑定服务,并同步返回service对象的两个方法