呼叫者没有从opentok ios sdk中的接收者获得结束呼叫事件

Posted

技术标签:

【中文标题】呼叫者没有从opentok ios sdk中的接收者获得结束呼叫事件【英文标题】:Caller doesn't get event of End Call from receiver in opentok ios sdk 【发布时间】:2014-08-14 13:21:19 【问题描述】:

我有一个 iphone 应用程序,我需要在其中管理从呼叫者到接收者的视频通话,并且它可以通过使用 Opentok 框架完美运行。视频通话和音频一切正常。 但是我在不接听电话的情况下从接收方结束通话时遇到问题。

如果接收方接听电话然后他结束通话,那么主叫方会收到结束通话的事件。但是,如果接收者没有从应用程序接听电话并直接结束通话,则呼叫者不会收到任何事件,并且会不断显示呼叫屏幕。所有委托及其方法都已实现。

代表是OTSessionDelegateOTSubscriberDelegateOTPublisherDelegate。所有必需的和可选的方法都已实现并且工作正常。

头文件中的对象是

#import <Opentok/Opentok.h>
@interface myViewController : UIViewController

      OTSession* session;
      OTPublisher* publisher;
      OTSubscriber* subscriber;

我正在调用doUnpublish 方法来结束通话。代码是

- (void)doUnpublish


    [loaderviewView removeFromSuperview];
    [_session unpublish:_publisher];
    [_session disconnect];
    [player stop];
     [self doDisconnect];
 


- (void)doDisconnect

   [callingView setHidden:YES];
   timer invalidate];
    [_session disconnect];

如果接收方接听电话然后结束通话,则工作正常。但是,如果他没有接到电话并直接结束,那么呼叫者不会收到呼叫被接收者结束的事件。

我没有提供更多代码,因为它包含我必须为呼叫信息管理的私人详细信息代码。这不是问题并且工作正常。我只需要知道如何在呼叫方获得接收方在没有接受呼叫的情况下结束呼叫的事件。

我的整个应用程序都准备好了,由于这种情况,我被暂停了。任何帮助将不胜感激。

【问题讨论】:

您好,我需要您的帮助。我想使用 opentok 实现视频通话。你能把对我有帮助的代码发给我吗? @User558。我怎样才能给你发送代码?那是一个大项目而不是小代码。您可以使用 opentok sdk 的演示项目来了解流程。当您不理解或卡在某事上时,您可以提出问题。 我实现了视频通话,它工作正常。如何接听其他设备的来电? @User558 我在公司工作,我不能分享整个项目。我可以通过提供提示和建议或小代码来提供帮助,但不能分享整个代码 我们通过 API 完成,我们在双方之间共享相同的会话 ID,然后通过相同的会话连接它们并获取事件 sessionDidConnect 和其他操作的通知。 【参考方案1】:

当 Receiver 单击结束调用时,您的 doUnpublish 方法会被调用,该方法又会调用 session disconnect 以断开与 opentok 会话的连接。会话断开连接会导致调用方的委托 connectionDestroyed 被触发,因此调用方知道接收方已与会话断开连接。

当 Receiver 从未接听电话,因此他从未连接到 OpenTok 会话时,就会出现问题。如果他从不连接到会话,则调用者的 connectionCreated 和 connectionDestroyed 委托将永远不会被解雇。

解决问题的方法是设置一个计时器。在主叫端,当他呼叫接收者时启动计时器。如果在 1 分钟内未触发 connectionCreated 委托,则意味着 Receiver 拒绝呼叫或错过呼叫。

【讨论】:

只设置一个计时器是否可行,或者我可以给来电者一个消息吗? 定时器到期后,调用者应该调用 session.disconnect() 以便它离开会话。您可能还想在接收端添加一个计时器,这样它就不会一直响铃。 从接收方没有,如果用户以任何方式结束通话或断开连接,而不是自动从接收方断开并停止音乐。 您需要在呼叫者和接收者之间进行某种类型的消息传递,以便当呼叫者/接收者以任何方式结束通话时,对方也应该收到结束通话的通知。 在我的情况下,我已接听电话,但在另一边仍然响铃

以上是关于呼叫者没有从opentok ios sdk中的接收者获得结束呼叫事件的主要内容,如果未能解决你的问题,请参考以下文章

通过 OpenTok 的 iOS SDK 发送 OpenTokSignal

跨平台视频通信项目-OpenTok

Ionic Cordova OpenTok 无法从 IOS 发布视频

在电话呼叫 iOS sdk 期间播放音乐文件的问题

OpenTok 在音频/视频会议会话中缺少音频

iOS 从外部按钮发起呼叫