集成方式


NIM NIMAVChat 提供两种集成方式:您既可以通过 CocoaPods 自动集成我们的 SDK,也可以通过手动下载 SDK, 然后添加到您的项目中。

我们提供两个下载地址。分别为:

手动集成

自动集成

Podfile 文件中加入

IM 音视频完整版:

  pod 'NIMSDK'

安装

  pod install

如果无法安装 SDK 最新版本,运行以下命令更新本地的 CocoaPods 仓库列表

  pod repo update

类库说明

NIM SDK 主要提供了如下类(协议)与方法

类(协议) 描述 说明
NIMSDK SDK的主入口类 提供初始化,注册,内部管理类管理的功能
NIMLoginManager 登录管理类 负责登录,注销和相应的回调收发
NIMChatManager 聊天管理类 负责消息的收发
NIMConversationManager 会话管理类 负责消息,最近会话的管理
NIMTeamManager 群组管理类 负责群组各种操作
NIMMediaManager 媒体管理类 负责多媒体相关的接口,比如语音录制,声音播放
NIMSystemNotificationManager 系统通知管理类 负责系统消息的接收和存储
NIMApnsManager 推送管理类 负责推送的设置和接收
NIMResourceManager 资源管理类 负责文件的上传和下载
NIMUserManager 好友管理类 负责对好友的增删查,以及对其会话的消息设置
NIMChatroomManager 聊天室管理类 负责聊天室状态管理和数据拉取及设置
NIMDocTranscodingManager 文档转码管理类 负责文档转码的查询和删除等

NIMAVChat 主要提供了如下类(协议)与方法

类(协议) 描述 说明
NIMAVChat NIMSDK 的音视频和互动白板扩展 封装了网络通话、互动白板和网络探测等的管理
NIMNetCallManager 音视频网络通话管理类 提供音视频网络通话功能
NIMRTSManager 互动白板管理类 提供数据通道 (TCP/语音通道) 来满足互动白板的需求
NIMRTSConferenceManager 多人互动白板管理类 提供多人数据通道 (TCP) 来满足多人互动白板的需求
NIMAVChatNetDetectManager 音视频网络探测管理类 提供音视频网络状态诊断功能

调用规则

调用方式

所有 NIMSDK 业务均通过 NIMSDK 单例调用

@interface NIMSDK : NSObject
/**
 *  获取SDK实例
 *
 *  @return NIMSDK实例
 */
+ (instancetype)sharedSDK;
@end

以获取登录管理类为例:

id<NIMLoginManager> loginManager = [NIMSDK sharedSDK].loginManager;

虽然所有的云信接口都是线程安全的,但我们强烈推荐您在且只在主线程调用相应接口。

所有 AVChat 相关业务均通过 NIMAVChatSDK 单例调用

/**
 *  NIMAVChat SDK
 */
@interface NIMAVChatSDK : NSObject

/**
 *  获取SDK实例
 *
 *  @return NIMAVChatSDK实例
 */
+ (instancetype)sharedSDK;
@end

以获取音视频通话管理类为例:

id<NIMNetCallManagerDelegate> netCallManager = [NIMAVChatSDK sharedSDK].netCallManager;

通知方式

SDK 通过两种方式通知上层 API 调用结果:回调(callback)和委托 (delegate),两种方式都只在主线程触发。

一般回调接口直接反映在对应接口的 completion 参数上,调用时设置即可。而委托则需要开发者在合适时机在对应管理类上进行添加和移除:一般推荐在相应 ViewController 或管理类初始化进行委托注册,在其销毁时进行移除。

例如,开发者需要在在会话页上监听音视频通话的通知回调

@implementation MyNetCallViewController

- (void)dealloc
{
  ...
    [[NIMAVChatSDK sharedSDK].netCallManager removeDelegate:self];
  ...
}

- (void)viewDidLoad 
{
  ...
    [[NIMAVChatSDK sharedSDK].netCallManager addDelegate:self];
  ...
}

#pragma mark - NIMNetCallManagerDelegate
- (void)onLocalDisplayviewReady:(UIView *)displayView
{
    //获取本地预览view通知回调
}