Remon-iOS-SDK 2.002

Remon-iOS-SDK 2.002

许可证 未知
发布最后发布2018年6月

RemoteMonster 维护。



  • RemoteMonster

REMON iOS SDK

关于

RemoteMonster iOS SDK(Remonios) API 参考指南

  • Remonios 是一款基于 WebRTC 的 API 平台的 iOS 原生 SDK。
  • 使用最新的 WebRTC 引擎实现本地应用,较之使用 NW.js 或其他 WebView 实现的 WebRTC,具有更高的自由度和更好的性能。
  • 目前主要支持基于 Swift 的开发方式,如有需要,也可以提供针对 Objective-C 的头文件。
  • 支持位码,可实现更轻松、更轻量级的开发。
  • 只需了解 Remon 类、RemonDelegate 和 RemonConfig 三个类的用法,就可以轻松开发视频通讯应用。

0.1.18 >>> 0.2.01 变更内容

0.2X 버전 이후부터는 연결이 완료된 이후에 로컬 영상 캡쳐와 리모트 영상 랜더링을 시작하여야 합니다。

연결 상태는 RemonDelegate의 onStateChange()를 이용하여 확인할 수 있습니다.

만연 상대방의 영상이 안보이는 문제가 발생한다면 아래와 수정하여 보시기를 바랍니다.

//  이전
func didReceiveRemoteVideoTrack(_ remoteVideoTrack:RTCVideoTrack){
    self.remoteVideoTrack = remoteVideoTrack
    self.remoteVideoTrack?.add(self.remoteView) //remoteVideoTrack을 얻는 시점에 비디오 랜더링 시작
}

// 0.2X 버전 이후
func didReceiveRemoteVideoTrack(_ remoteVideoTrack:RTCVideoTrack){
  self.remoteVideoTrack = remoteVideoTrack
}

func onStateChange(_ state:RemonState){
  switch state {
    case RemonState.COMPLETE:
      self.remoteVideoTrack?.add(mainVideoView) //연결이 완료 되는 시점에 비디오 랜더링 시작
      // remon?.startLocalVideoCapture() // RemonConfig의 autoCaptureStart가 false 일 경우
  }
}

RemonConfig

  • add autoCaptureStart
    • 커넥션이 완료된 후 자동으로 로컬 영상 캡쳐를 시작합니다。(default: true)
    • false로 설정하였을 경우 사용자가 직접 Remon객체의 startLocalVideoCapture()를 호출하여야 합니다.
  • add debugMode
    • webRTC의 디버그 로그를 활성화 합니다。(default: false)
  • add debugLevel
    • webRTC의 디버그 로그 레벨
  • add useFrontCame
    • 전면 카메라 사용 여부 (default: true)

Remon

  • add mediaTrackStats(track, level, completionHandler)
    • 전달 받은 track:RTCMediaStreamTrack 인자의 상태값을 얻어옵니다.
  • add startLocalVideoCapture()
    • 로컬 비디오의 캡쳐를 시작합니다.
    • 비디오 캡쳐 정보는 RemonConfig의 값에 따라 변경됩니다.
  • add stopLocalVideoCapture()
    • 로컬 비디오의 캡쳐를 정지합니다.
    • 정지 상태에서 startLocalVideoCapture()를 호출하시면 캡쳐가 재시작됩니다.
  • add createRoom()
    • 방송 모드에서 방을 생성하는 데 이용됩니다.
    • createBroadcast(chID) 대신 createRoom() 사용을 권장합니다.
  • add joinRoom(chID)
    • 방송 모드에서 chID에 해당하는 방에 들어가는 데 이용됩니다.
    • createBroadcast(chID) 대신 joinRoom(chID) 사용을 권장합니다.
  • deprecated createBroadcast(chID)
  • remove pauseRemoteVideo()

RemonDelegate

  • 添加 didReceiveLocalVideoCapture(localVideoCaptur)
  • 当本地视频捕捉器对象创建时调用。
    • 将 RTCCameraPreviewView 对象的 captureSession 设置为 RTCCameraVideoCapturer 对象的 captureSession,可以实现预览界面。
    • 当 RemonConfig 中新添加的 autoCaptureStart 值为 true(默认)时,通信连接完成后将自动开始捕捉。
    • 如果 RemonConfig 中的 autoCaptureStart 值设置为 false,则通信连接完成后可以手动开始捕捉。
    • @手动捕捉开始建议在 onStateChange(state:RemonState) 代理的 state 值为 COMPLETE 后使用。
  • 添加 didReceiveRemoteAudioTrack(remoteAudioTrack)
    • 当远程音频轨道对象创建时调用。
  • 添加 onCreateChannel(channelID)
    • 用于在通道创建时获取通道 ID。
  • 添加 onDisconnectChannel(chID)
    • 当通道连接断开时调用。

1. 安装

手动

iOS SDK 入门 · RemoteMonster 文档

cocoapods

pod 'Remon-iOS-SDK', '~> 0.2 添加到您要安装 SDK 的项目的 Podfile 中,并进行

target 'MyApp' do
  pod 'Remon-iOS-SDK', '~> 0.2'
end

修改,然后在终端中运行 pod install。如果 pod install 无法正常工作,则运行 pod update


2. 接口

Remon

使用 RemoteMonster API 的最基本类。通过 Remon 类连接服务器并发送、接收命令以及断开连接。从服务器接收的消息主要通过 RemonDelegate 处理。

init(delegate: config:)

  • 参数
    • delegate: RemonDelegate 实现对象

    • config:RemonConfig RemonConfig 对象(参见 RemonConfig)

connectChannel(chId:)

尝试连接或创建频道。

  • 参数
    • chId:String 要连接或创建的频道 ID 值。如果频道 ID 存在,则尝试连接到该频道;如果频道 ID 不存在,则创建新频道。

startLocalVideoCapture()

开始本地视频捕获。如果 RemonConfig.autoCaptureStart 为 true,则自动开始捕获。如果 RemonConfig.autoCaptureStart 为 false,则需要手动开始捕获,并且在 RemonState 为 COMPLETE 之后调用。

startLocalVideoCapture()

停止本地视频捕获。

createRoom()

创建直播。

joinRoom(chID:)

进入直播。

  • 参数
    • chId:String 要连接或创建的直播的 Channel ID 值。

getRemonState()

获取表示当前连接状态的RemonState值。(参考RemonState)

  • return => RemonState

pauseRemoteAudio(pause:)

屏蔽原远程对象的语音。

  • 参数
    • pause:Bool 表示屏蔽的 Boolean 值。

pauseLocalVideo(pause:) @deprecated

屏蔽自身(本地)的语音。

  • 参数
    • pause 表示屏蔽的 Boolean 值。

switchCamera()

切换前后摄像头。

search(query:)

根据给定名称搜索频道名称。支持部分搜索。

  • 参数
    • query:String 要搜索的 Channel ID

sendMessage(message:)

当频道连接时,向对方传送消息。

  • 参数
    • message:String

关闭函数()

关闭连接并释放所有与Remon相关的资源。

mediaTrackStats(track, level, completionHandler)

获取传递的轨道的状态信息。

  • 参数
    • track:RTCMediaStreamTrack 获取信息的对象轨道
    • level:RTCStatsOutputLevel 信息级别 .debug .standard
    • completionHandler: ([RTCStatsOutputLevel]) -> Void 完成处理函数

RemonConfig

在执行Remon之前,需要预先设置各种通信/广播状态。key和serviceId是必填项,如果只想使用声音,则需要将videoCall设置为false,还可以修改视频编解码器等。

初始化函数()

创建RemonConfig对象。默认构造函数。

iceServers:Array

key:String

从RemoteMonster服务器获得的认证密钥

serviceId:String

用于使用RemoteMonster API的所需服务ID。在RemoteMonster主页面上发起请求以获取。

token:String

创建Remon对象时从服务器接收并用于认证的一次性token。

videoCall:Bool

仅使用音频时为false,同时使用音频和视频时为true。

videoCodec:String

将发送的视频的图像编码。默认为H264,可使用VP9、VP8等。

videoWidth:Int

将发送的视频的宽度。默认值为640。

videoHeight:Int

将发送的视频的高度。默认值为480。

videoFps:Int

将发送的视频的帧率(每秒帧数)。默认值为30。

useFrontCamera:Bool

是否使用前置摄像头

autoCaptureStart:Bool

连接完成后是否自动本地视频捕捉。默认值 true

debugMode:Bool

是否显示WebRTC调试日志。默认值 false

debugLevel:RTCLoggingSeverity

WebRTC调试日志级别。默认值 .error

remoteAudioMuted:Bool (草案)

表示远程目标的音频静音状态的布尔值。

localAudioMuted:Bool (草案)

表示本地音频静音状态的布尔值。

remoteVideoSessionClosed:Bool (草案)

表示远程目标的视频会话状态的布尔值。

localVideoSessionClosed:Bool(草稿)

表示本地视频会话状态的 Boolean 值。

RemonError

Remon 错误代码

枚举 RemonError:Error

case InvalidParameterError(String) case UnsupportedPlatformError(String) case InitFailedError(String) case WebSocketError(String) case ConnectChannelFailed(String) case BusyChannelError(String) case UserMediaDeviceError(String) case IceFailed(String) case Unknown(String)

RemonState

枚举 RemonState:Int

case INIT 创建对象并连接服务器和 WebSocket 的过程状态 case WAIT 创建通道并等待对方连接时的状态 case CONNECT 连接对方通道时的状态 case COMPLETE 相互之间连接完成时的状态 case FAIL 在执行通信连接过程中发生错误时的状态 case EXIT 通信连接后退出时的状态 case CLOSE

RemonDelegate

Remon 工作委托者。Remon 的状态变化、错误发生等事件发生时,为服务开发者提供额外处理委托的协议。

onStateChange(state:RemonState)

通道的 RemonState 状态发生变化时触发

  • 参数
    • state:表示 Remon 当前状态的状态值(参照 RemonState)

didCreateLocalCapturer(localVideoCapturer:)

在创建本地视频捕获后调用。之后可以借助 Remon 的 startVideoCapturer 方法来实现视频捕获。

  • 参数
    • localVideoCapturer:RTCCameraVideoCapturer 为处理视频捕获而用的 WebRTC 的 RTCCameraVideoCapturer 对象

didStartLocalCapturer(localVideoCapturer:)

在 Remon 的 startVideoCapturer(preview:) 方法调用后,从预览中调用,视频捕获开始后调用

  • 参数
    • localVideoCapturer:RTCCameraVideoCapturer 为处理视频捕获而用的 WebRTC 的 RTCCameraVideoCapturer 对象

didReceiveLocalVideoTrack(localVideoTrack:)

接收到本地音视频资源时调用

  • 参数
    • localVideoTrack:RTCVideoTrack WebRTC 的 RTCVideoTrack 对象

didReceiveRemoteVideoTrack(remoteVideoTrack:)

接收远程视频资源时调用

  • 参数
    • remoteVideoTrack:RTCVideoTrack WebRTC 的 RTCVideoTrack 对象

didReceiveLocalVideoCapture(localVideoCapture:)

接收到本地视频捕获资源时调用

  • 参数
    • localVideoCapture:RTCVideoCapture WebRTC 的 RTCVideoCapture 对象

didReceiveRemoteAudioTrack(remoteAudioTrack:)

接收远程音频资源时调用

  • 参数
    • remoteAudioTrack:RTCAudioTrack WebRTC的RTCAudioTrack对象

onError(error:)

发生错误时调用

  • 参数
    • error:RemonError RemonError引用

onMessage(message:)

在通道连接时从对方收到消息时调用

  • 参数
    • message:String 接收到的消息字符串

onSearch(result:)

对方连接结束时发生

  • 参数
    • result:Array 搜索结果列表

func onCreateChannel(channelID)

通道创建时发生。

func onDisconnectChannel()

与我完全断开连接时发生。

func onClose()

通道关闭时调用


3. 序列

正在编写

4. 示例

正在编写