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 集成网易云信的音视频呼叫组件-优快云博客

### 网易云信 IM SDK 和 API 文档获取 网易云信提供了丰富的开发资源来支持开发者快速接入其即时通讯 (IM) 功能以及音视频通话等功能。以下是关于如何下载网易云信 IM SDK 及查阅相关 API 文档的息: #### 1. **SDK 下载** 网易云信的官方文档中提到,客户端需要通过 SDK 连接并登录到服务器[^2]。因此,为了实现这一目标,可以访问网易云信官网中的“开发准备”页面,该页面通常会提供不同平台下的 SDK 下载链接。 - 官方网站上会有专门的章节描述各平台(Android、iOS、Web 等)对应的 SDK 版本及其更新日志。 - 开发者可以根据实际需求选择适合的操作系统版本进行下载。 #### 2. **API 文档查询** 对于服务端 API 的使用流程,尤其是像注册账号这样的操作,可以通过阅读《IM 服务端 API 文档》获得详细的指导[^1]。这份文档不仅涵盖了基础的服务端接口调用方法,还包含了错误码解析等内容,帮助开发者更好地理解每一个请求参数的意义及返回结果可能的情况。 另外,在集成音视频通话前需完成 IM 账号系统的搭建工作[^3],这也意味着相关的 API 接口同样记录于上述提及的服务端 API 手册之中。 至于消息处理方面需要注意的是,如果采用服务端发送方式,则无法激活第三方回调机制[^4]。所以当设计应用逻辑时应考虑到这一点差异带来的影响。 #### 示例代码片段展示 下面给出一段简单的 Python 请求示例用于创建新用户的场景模拟: ```python import requests url = "https://api.netease.im/nimserver/user/create.action" headers = { &#39;Content-Type&#39;: &#39;application/x-www-form-urlencoded&#39;, } data = { &#39;accid&#39;: &#39;test_user&#39;, &#39;name&#39;: &#39;Test User&#39;, &#39;icon&#39;: &#39;&#39;, &#39;token&#39;: &#39;&#39;, } response = requests.post(url, headers=headers, data=data) print(response.json()) ``` 此脚本展示了向指定 URL 地址发起 POST 请求的过程,并附带必要的字段如 `accid`, `name` 等作为用户资料的一部分提交给服务器验证。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值