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. 安装
手动
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. 示例
正在编写