本篇文档介绍如何建立一对一视频通话。在主叫的一方,这个过程包括发起通话请求,收到回应,关闭通话;在被叫的一方,这个过程包括收到一对一视频通话请求,接受/拒绝通话请求,关闭通话。
发起通话请求
使用 -[WDGVideoCall callWithUid:localStream:data:]
来发起通话请求,该方法需要传递三个参数:
- remoteUid: 通话接收方的
uid
,uid
是 WilddogAuth 为认证用户分配的唯一身份标识; - localStream: 通话发起方的本地媒体流;
- data: 用户自定义信息,可以为空。
调用该方法返回 WDGConversation 实例,用于控制本次一对一视频通话。
self.conversation = [self.video callWithUid:@"remote-uid" localStream:self.localStream data:@"custom-data"; |
注:每个客户端同一时间只能存在一个通话。发起电话请求时,默人会挂断前一次通话。
收到通话请求
其他用户发来通话请求时,用户可以从 WDGVideoCall 的代理得到通知,并获得 WDGConversation 实例:
- (void)wilddogVideoCall:(WDGVideoCall *)videoCall didReceiveCallWithConversation:(WDGConversation *)conversation data:(NSString *)data { |
设置通话代理
设置 WDGConversation 的代理 <WDGConversationDelegate> 用于监听通话状态。
self.conversation.delegate = self; |
WDGConversationDelegate 包含四个方法:
方法名 | 说明 |
---|---|
-conversation:didReceiveResponse: |
发起通话请求后,通话状态发生变化会触发该方法。通话状态包含接收、拒绝、繁忙和请求超时。 |
-conversation:didReceiveStream: |
收到远端媒体流时,触发该方法。 |
-conversation:didFailedWithError: |
通话发生错误时,触发该方法。 |
-conversationDidClosed: |
通话被关闭时,触发该方法。 |
接受/拒绝通话请求
使用 -[WDGConversation acceptWithLocalStream:]
来接受通话请求,该方法需要传入本地媒体流,本地流的创建请参考 创建媒体流:
[self.conversation acceptWithLocalStream:self.localStream]; |
使用 -[WDGConversation reject]
来拒绝通话请求:
[self.conversation reject]; |
接受/拒绝对方的通话请求后,对方会通过 -[WDGConversationDelegate conversation:didReceiveResponse:
收到 ACCEPT / REJECT 状态的通知:
- (void)conversation:(WDGConversation *)conversation didReceiveResponse:(WDGCallStatus)callStatus { |
关闭一对一视频通话
使用 -[WDGConversation close]
来取消呼叫或者结束通话。
[self.conversation close]; |
通话被关闭后,对方会通过 -[WDGConversationDelegate conversationDidClosed]
收到通话结束的通知:
- (void)conversationDidClosed:(WDGConversation *)conversation { |