我正在使用一个预先存在的iOS实现,该实现使用OpenTok进行视频通话。 一方面,我们有一个Web用户,另一方面,有一个iOS用户。我现在遇到的问题是,iOS用户在离开会话并重新加入后无法听到Web用户的声音。但是,重新加入后,视频仍然可以正常工作。 作为退出视频通话过程的一部分,iOS应用将取消订阅并删除其视图,取消发布发布者,最后断开会话连接。然后,我们弹出视图控制器,以便它创建的任何对象都应该消失。为了重新加入会话,我创建了一个新的ViewController并尝试连接,然后出现音频问题。从症状来看,离开会话后似乎出现了一些故障,并且OpenTok保持了一些我忽略的内部状态。
我知道事实是iOS实施存在问题。我们有网络和Android实施方案,都可以完美运行。
试图添加一个异步等待时间,使会话和对象被破坏。
我也尝试过在委托方法中设置断点,以查看是否存在一种一致的模式可以将我带到根本原因,但是我似乎找不到任何原因。
我添加了一些日志语句以尝试判断断开连接/取消订阅/ etc是否产生错误,但是返回的错误为nil,就像操作成功完成一样。
这是我要断开连接的操作:
if let session = self.otSession {
L.debug("Cleaning up \(self.subscriptions.count) subscriptions")
var error: OTError? = nil
for sub in self.subscriptions {
sub.view?.removeFromSuperview()
session.unsubscribe(sub, error: &error)
if let error = error {
L.log(error)
}
}
if self.otPublisher != nil {
self.otPublisher!.view?.removeFromSuperview()
session.unpublish(self.otPublisher!, error: &error)
if let error = error {
L.log(error) }
}
session.disconnect(&error)
if let error = error {
L.log(error)
}
}
self.subscriptions.removeAll()
self.otPublisher?.view?.removeFromSuperview()
self.otPublisher = nil
self.otSession = nil
这里有人与OpenTok有类似的问题吗?