实现1对1呼叫(含UI集成-V2)

更新时间: 2024/08/23 10:16:57

呼叫组件(NERTCCallkit)通过 UI 组件化的方式,简化了呼叫流程,您只需要调用几行代码,就可以实现 1 对 1 呼叫,并包含呼叫的 UI 界面。本文介绍呼叫组件 V2 版本 的集成和实现方法。

注意事项

  • 呼叫组件默认使用调试模式。应用正式上线前,请在 网易云信控制台 中将指定应用的鉴权方式改回 安全模式。安全模式下需要使用 Token 加入房间,详细说明请参考 Token 鉴权
  • 针对组件中的回调信息,开发者要做好相应回调数据的上报及存储,以便于后期上线之后排查问题。

开发环境

在开始运行工程之前,请您准备以下开发环境:

  • Xcode 14 及以上版本。
  • iOS 10.0 及以上版本的 iOS 设备。
  • 已安装 CocoaPods。

准备工作

  1. 网易云信控制台 创建应用,并获取了对应的 App Key。详细操作请参考 创建应用

  2. 开通 IM 即时通讯、音视频通话 2.0 及信令产品。开通服务的操作流程请参考 开通服务

  3. 开通音视频通话 2.0 产品的话单功能。开通步骤请参考 开通话单功能

集成呼叫组件

步骤一:集成 IM SDK

  1. SDK 下载页面 查看 IM SDK 的最新版本,并查询本地仓库中对应的版本是否为最新版本。

    若不是最新版本,建议先更新本地仓库,以确保可以集成最新的 SDK 版本。

    CocoaPodspod search NIMSDK_LITE   //本地仓库中查询 NIMSDK_LITE 信息
    pod repo update          //更新本地仓库
    
  2. 在项目根目录下的 Podfile 文件中写入以下内容。

    CocoaPodspod 'NIMSDK_LITE'
    
  3. 执行以下命令安装 IM SDK。

    CocoaPodspod install
    

步骤二:初始化 IM SDK

将 IM SDK 集成到客户端后,需要先完成 IM SDK 的初始化才能使用其他功能。

  1. 在项目文件中引入头文件 NIMSDK.h

    CocoaPods#import <NIMSDK/NIMSDK.h>
    
  2. 调用 registerWithOption: 方法初始化 SDK。

    Objective-C- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        ...
        //推荐在程序启动的时候初始化 NIMSDK
        NSString *appKey        = @"your app key";//网易云信分配的 appKey
        NIMSDKOption *option    = [NIMSDKOption optionWithAppKey:appKey];
        option.apnsCername      = @"your APNs cer name";//APNs 推送证书名
        option.pkCername        = @"your pushkit cer name";//PushKit 推送证书名
        [[NIMSDK sharedSDK] registerWithOption:option];
        ...
    }
    

    以上提供了一个简化的初始化示例,更多初始化信息请参考 初始化 SDK

步骤三:引入呼叫组件

建议使用 CocoaPods 进行管理。呼叫组件内部没有引入 NERTC,请在 Podfile 中添加以下内容,单独引入 NERTC SDK。

CocoaPodspod 'NERtcCallUIKit'
pod 'NERtcSDK', :subspecs => ['RtcBasic']    // subspecs => ['RtcBasic'] 用于指定使用 RTC 基础版本,不包含美颜功能。若要使用美颜功能,此行请修改为 pod 'NERtcSDK'

SDK 版本限制

  • 呼叫组件与 NIM SDK、NERTC SDK 之间存在映射关系,使用呼叫组件时,必须使用指定版本的 NIM SDK 和 NERTC SDK。如果您在集成呼叫组件之前,已经集成了 NIM SDK 和 NERTC SDK,请确认 SDK 版本为指定版本。

  • 不同版本的呼叫组件适配不同版本的 NIM SDK 和 NERTC SDK,具体版本的适配关系请参考 更新日志

步骤四:初始化呼叫组件

呼叫组件的实现为单实例,通过接口 NECallEngine.sharedInstance 获取此实例,调用实例方法 setup: 完成初始化。

setup: 方法为使用组件前必须调用的方法,若未初始化直接调用其他组件方法,会发生不可预知的问题或故障。

Objective-C#import <NERtcCallKit/NERtcCallKit.h>

@interface SomeViewController()<NECallEngineDelegate>

@end

@implementation SomeViewController

- (void)viewDidLoad {
    [self setupSDK];
}

- (void)setupSDK {
    NESetupConfig *setupConfig = [[NESetupConfig alloc] initWithAppkey:kAppKey];
    [[NECallEngine sharedInstance] setup:setupConfig];

    NECallUIKitConfig *config = [[NECallUIKitConfig alloc] init];
    [[NERtcCallUIKit sharedInstance] setupWithConfig:config];
}

@end

步骤五:登录和登出 IM

若已经在 App 内实现了 NIMSDK 登录和登出逻辑,则不必调用相应的登录、登出接口,直接跳过此步骤即可。

使用组件的 NIMSDK login 进行登录,使用 NIMSDK logout 进行登出,登出或未进行登录则不能进行呼叫。

Objective-C[NIMSDK.sharedSDK.loginManager login:@"accid" token:@"token" completion:^(NSError * _Nullable error) {

}];

[NIMSDK.sharedSDK.loginManager logout:^(NSError * _Nullable error) {

}];

实现一对一呼叫

呼叫组件(NERTCCallkit)内部已包括了呼叫的相关逻辑,您只需要调用几行代码触发呼叫即可。

Objective-CNEUICallParam *callParam = [[NEUICallParam alloc] init];
NEUser *localUser = [NEAccount shared].userModel;
callParam.currentUserAccid = @"current user accid";
callParam.remoteUserAccid = @"remote Accid";
callParam.remoteShowName = @"remote show name";
[[NERtcCallUIKit sharedInstance] callWithParam:callParam withCallType:callType];
此文档是否对你有帮助?
有帮助
去反馈
  • 注意事项
  • 开发环境
  • 准备工作
  • 集成呼叫组件
  • 步骤一:集成 IM SDK
  • 步骤二:初始化 IM SDK
  • 步骤三:引入呼叫组件
  • 步骤四:初始化呼叫组件
  • 步骤五:登录和登出 IM
  • 实现一对一呼叫