# 登录视频平台

本文主要展示如何初始化 Juphoon 的 SDK 以及登录视频平台。

# 初始化SDK

  1. 在使用业务接口前,需对 Juphoon SDK 进行初始化操作。
_client = [JCClient create:@"AppKey" callback:self extraParams:nil];
_mediaDevice = [JCMediaDevice create:client callback:self];
_mediaChannel = [JCAgent create:client mediaDevice:device callback:self];

JCClient (opens new window) 为 SDK 的基础模块,负责视频平台的登录登出,只有登录到视频平台才可以使用视频相关的业务,AppKey 作为同个环境的分域依据,同一个域的终端才能实现互通。

TIP

注意:在运行前,请扫描下方二维码联系 Juphoon 市场售前工程师获取 AppKey。

image-20210315095937896

JCMediaDevice (opens new window) 为 SDK 的媒体模块,负责本地的媒体设备操作,视频画面渲染等功能。

JCMediaChannel (opens new window) 为 SDK 的多方通话模块,类似音视频房间的概念,可以通过频道号加入此频道,从而进行音视频通话。

  1. 这些模块初始化的时候需要有 callback 作为入参来监听各模块的事件,如:
@interface JCManager () <JCClientCallback, JCMediaChannelCallback, JCMediaDeviceCallback>

然后根据 Xcode 的提示将 interface 的接口实现补全即可。

# 登录

login

使用 Juphoon 视频的能力,需要先设置服务器地址。

[client setConfig:JCClientConfigServer value:@”address“];

登录到Juphoon视频平台

[_client login:@"userName" password:@"password"];

如果服务器开启了密钥协商,请将密钥文件读取后进行 base64 编码,通过 Login (opens new window) 的重载接口进行传入。

[_client login:@"userName" password:@"password" loginParam:loginParam];

loginParam里的 rootDer 需赋值 base64 之后的密钥内容

如果服务器开启了token 校验,则需要在 loginParam 中传入 token 来进行登录的校验。

  • Old: 是否是 juphoon 提供的 token
  • Type: 校验的类型,一般对应具体集成方,由 juphoon 提供一个字符串
  • Token: token 的内容

登录的结果将会通过 JCClientCallback (opens new window) 中的接口上报

- (void)onLogin:(bool)result reason:(JCClientReason)reason{
    if (result) {
        // 登录成功
    } else {
        // 登录失败
    }
}

# 登出

logout

[_client logout];

登出结果通过 JCClientCallback (opens new window) 中的接口进行上报。

- (void)onLogout:(JCClientReason)reason;

# 销毁SDK

如不需再使用 SDK 的相关功能,可以强制释放 SDK 的资源。

每个模块都有对应的销毁接口,除去 JCMediaChannel 非单例需要对 Create 的对象进行初始化,其他模块皆为静态函数。

/**
 * 销毁 JCClient 对象
 *
 * @note 在调用此方法后不能马上调用 {@link create:callback:extraParams: create} 方法去重新创建 JCClient 对象
 */
+ (void)destroy;

调用示例:

- (void)destroy {
    if (_client != nil) {
        [JCClient destroy];
        [JCAgent destroy];
        [JCStorage destroy];
        [JCMediaDevice destroy];
        [_mediaChannel destroy];
    }
}