集成方式
NIM NIMAVChat 提供两种集成方式:您既可以通过 CocoaPods
自动集成我们的 SDK,也可以通过手动下载 SDK, 然后添加到您的项目中。
我们提供两个下载地址。分别为:
手动集成
根据自己工程需要,下载对应版本的 NIM SDK,得到 NIMSDK.framework 和 NIMAVChat.framework,以及未链接的全部三方依赖库 注1 ,将他们导入工程。
添加其他 NIM SDK 依赖库
- MobileCoreServices.framework
- SystemConfiguration.framework
- AVFoundation.framwork
- CoreTelephony.framework
- CoreMedia.framework
- AudioToolbox.framework
- VideoToolbox.framework
- libc++.tbd 注2
- libsqlite3.0.tbd
- libz.tbd
注1 :开发者应根据自身项目,将不冲突的依赖库也添加进工程。
注2 :在 SDK 3.0.0 以前版本 (包括 3.0.0) ,c++ 库请使用 libstdc++6.0.9.tbd , 之后的版本统一替换成 libc++.tbd 。在
Build Settings
->Other Linker Flags
里,添加选项-ObjC
。如果需要在后台时保持音频通话状态,在
Capabilities
->Background Modes
里 勾选audio, airplay, and Picture in Picture
。在需要使用即时通讯 SDK 的地方
import <NIMSDK/NIMSDK.h>
,在需要使用实时音视频 SDK 的地方import <NIMAVChat/NIMAVChat.h>
。
自动集成
在 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通知回调
}