简体   繁体   English

QuickBlox聊天:无法执行视频通话

[英]QuickBlox Chat: can't perform video call

I'm developing a video chat application with quickblox. 我正在使用quickblox开发视频聊天应用程序。 And I have a trouble with performing video call. 而且我无法进行视频通话。 There are logs of two instances of application started in one time: 一次启动有两个应用程序实例的日志:

Sep 11 16:43:40 iPod-touch DimChat[3823] <Warning>: QBChat/didConnect
Sep 11 16:43:40 iPod-touch DimChat[3823] <Warning>: -[QBChat xmppStreamDidAuthenticate:] -> user: 290427, supportsStartTLS: 1, isSecure: 0
Sep 11 16:43:40 iPod-touch DimChat[3823] <Warning>: -[QBChat xmppStream:didSendPresence:] -> Presence: <presence/>
Sep 11 16:43:40 iPod-touch DimChat[3823] <Warning>: -[QBChat xmppStream:didSendIQ:] -> IQ: <iq type="get" id="561006823"><query xmlns="jabber:iq:roster"/></iq>
Sep 11 16:43:41 iPod-touch DimChat[3823] <Warning>: -[QBChat xmppStream:didReceiveIQ:] -> <iq xmlns="jabber:client" id="561006823" type="result" to="290427-3936@chat.quickblox.com/tigase-3171"><query xmlns="jabber:iq:roster"/></iq>
Sep 11 16:44:00 iPod-touch DimChat[3823] <Warning>: -[QBChat xmppStream:didSendPresence:] -> Presence: <presence/>
Sep 11 16:44:18 iPod-touch wifid[14] <Error>: WiFi:[400596258.779212]: Disable WoW requested by "UserEventAgent"
Sep 11 16:44:18 iPod-touch DimChat[3823] <Warning>: QBChat/didDisconnect, error: Error Domain=GCDAsyncSocketErrorDomain Code=7 "Socket closed by remote peer" UserInfo=0x1ed273e0 {NSLocalizedDescription=Socket closed by remote peer}
Sep 11 16:44:20 iPod-touch DimChat[3823] <Warning>: -[QBChat sendPresence] -> return. You have to be logged in in order to use Chat API

The second instance which calls the first one: 第二个实例调用第一个实例:

2013-09-11 16:43:46.408 DimChat[55216:b10f] QBChat/didConnect
2013-09-11 16:43:47.053 DimChat[55216:a207] -[QBChat xmppStreamDidAuthenticate:] -> user: 503867, supportsStartTLS: 1, isSecure: 0
2013-09-11 16:43:47.053 DimChat[55216:a207] -[QBChat xmppStream:didSendIQ:] -> IQ: <iq type="get" id="561006823"><query xmlns="jabber:iq:roster"/></iq>
2013-09-11 16:43:47.053 DimChat[55216:a207] -[QBChat xmppStream:didSendPresence:] -> Presence: <presence/>
2013-09-11 16:43:47.215 DimChat[55216:b10f] -[QBChat xmppStream:didReceiveIQ:] -> <iq xmlns="jabber:client" id="561006823" type="result" to="503867-3936@chat.quickblox.com/tigase-3170"><query xmlns="jabber:iq:roster"/></iq>
2013-09-11 16:43:56.295 DimChat[55216:b10f] -[QBVideoChat init] -> 
2013-09-11 16:43:56.295 DimChat[55216:b10f] -[QBVideoChat orientatioDidChange:] -> LandscapeLeft
2013-09-11 16:43:56.296 DimChat[55216:b10f] -[QBVideoChat callUser:conferenceType:customParameters:] -> VideoChat configuration: {
    kQBVideoChatBadConnectionTimeout = 5;
    kQBVideoChatCallTimeout = 15;
    kQBVideoChatFrameQualityPreset = AVCaptureSessionPresetLow;
    kQBVideoChatP2PTimeout = "1.5";
    kQBVideoChatTURNServerEndPoint = "turnserver.quickblox.com";
    kQBVideoChatVideoFramesPerSecond = 10;
    kQBVideoChatWriteQueueMaxAudioOperationsThreshold = 25;
    kQBVideoChatWriteQueueMaxVideoOperationsThreshold = 25;
}
2013-09-11 16:43:56.296 DimChat[55216:b10f] -[QBChat xmppStream:didSendMessage:] -> Message: <message id="282475249" type="qbvideochat_call" to="290427-3936@chat.quickblox.com" from="503867-3936@chat.quickblox.com"><body>1</body></message>
2013-09-11 16:43:58.297 DimChat[55216:b10f] -[QBChat xmppStream:didSendMessage:] -> Message: <message id="1622650073" type="qbvideochat_call" to="290427-3936@chat.quickblox.com" from="503867-3936@chat.quickblox.com"><body>1</body></message>
2013-09-11 16:44:00.298 DimChat[55216:b10f] -[QBChat xmppStream:didSendMessage:] -> Message: <message id="984943658" type="qbvideochat_call" to="290427-3936@chat.quickblox.com" from="503867-3936@chat.quickblox.com"><body>1</body></message>
2013-09-11 16:44:02.300 DimChat[55216:b10f] -[QBChat xmppStream:didSendMessage:] -> Message: <message id="1144108930" type="qbvideochat_call" to="290427-3936@chat.quickblox.com" from="503867-3936@chat.quickblox.com"><body>1</body></message>
2013-09-11 16:44:04.300 DimChat[55216:b10f] -[QBChat xmppStream:didSendMessage:] -> Message: <message id="470211272" type="qbvideochat_call" to="290427-3936@chat.quickblox.com" from="503867-3936@chat.quickblox.com"><body>1</body></message>
2013-09-11 16:44:06.302 DimChat[55216:b10f] -[QBChat xmppStream:didSendMessage:] -> Message: <message id="101027544" type="qbvideochat_call" to="290427-3936@chat.quickblox.com" from="503867-3936@chat.quickblox.com"><body>1</body></message>
2013-09-11 16:44:07.065 DimChat[55216:b10f] -[QBChat xmppStream:didSendPresence:] -> Presence: <presence/>
2013-09-11 16:44:08.303 DimChat[55216:b10f] -[QBChat xmppStream:didSendMessage:] -> Message: <message id="1457850878" type="qbvideochat_call" to="290427-3936@chat.quickblox.com" from="503867-3936@chat.quickblox.com"><body>1</body></message>
2013-09-11 16:44:10.303 DimChat[55216:b10f] -[QBChat xmppStream:didSendMessage:] -> Message: <message id="1458777923" type="qbvideochat_call" to="290427-3936@chat.quickblox.com" from="503867-3936@chat.quickblox.com"><body>1</body></message>
2013-09-11 16:44:11.304 DimChat[55216:b10f] -[QBVideoChat finishCallWithStatus:customParameters:] -> kStopVideoChatCallStatus_OpponentDidNotAnswer
2013-09-11 16:44:11.305 DimChat[55216:b10f] -[QBVideoChat deinitialization] -> 
2013-09-11 16:44:11.305 DimChat[55216:b10f] -[QBVideoChat releaseVideoCapture] -> 
2013-09-11 16:44:11.306 DimChat[55216:b10f] -[QBVideoChat releaseAudioCapture] -> 
2013-09-11 16:44:11.306 DimChat[55216:b10f] -[QBVideoChat releaseSocketConnection] -> 
2013-09-11 16:44:11.306 DimChat[55216:b10f] -[QBChat xmppStream:didSendMessage:] -> Message: <message id="2007237709" type="qbvideochat_stopCall" to="290427-3936@chat.quickblox.com" from="503867-3936@chat.quickblox.com"><body>kStopVideoChatCallStatus_OpponentDidNotAnswer</body></message>
2013-09-11 16:44:25.264 DimChat[55216:b10f] QBChat/didDisconnect, error: Error Domain=GCDAsyncSocketErrorDomain Code=7 "Socket closed by remote peer" UserInfo=0x9ca1260 {NSLocalizedDescription=Socket closed by remote peer}
2013-09-11 16:44:27.074 DimChat[55216:b10f] -[QBChat sendPresence] -> return. You have to be logged in in order to use Chat API

Actually the problem is that the first instance didn't receive incoming call. 实际上,问题在于第一个实例没有收到传入呼叫。 I checked the video chat example from quickblox's github. 我检查了来自quickblox的github的视频聊天示例。 It works with my users/passwords, so I have a mistake in my code, but I really don't know where I should search it. 它可以与我的用户名/密码一起使用,因此我的代码有误,但是我真的不知道应该在哪里搜索。

As you can see both instances have the same problem: "Socket closed by remote peer". 如您所见,两个实例都有相同的问题:“套接字被远程对等体关闭”。 But this problem happens after call timeout, so it isn't a cause of main problem. 但是此问题在呼叫超时后发生,因此不是主要问题的原因。

Finally I've found the solution. 最后,我找到了解决方案。 The problem was in QBVideoChat object. 问题出在QBVideoChat对象中。 I thought that QBChat will send me the signal when another user calls me and then I'll create the QBVideoChat object and present it's view on screen. 我以为QBChat会在另一个用户打电话给我时向我发送信号,然后我将创建QBVideoChat对象并将其显示在屏幕上。

The sad truth is that QBChat don't send any video relations signals before I create QBVideoChat. 可悲的事实是,在创建QBVideoChat之前,QBChat不会发送任何视频关系信号。 So I have to create it at program's start in order to receive chatDidReceiveCallRequestFromUser signal. 所以我必须在程序开始时创建它,以便接收chatDidReceiveCallRequestFromUser信号。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM