来电者在opentok ios sdk中没有收到来自接收者的结束通话事件

时间:2014-08-14 13:21:19

标签: objective-c iphone ios7 xcode5 opentok

我有一个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];
}

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

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

我的整个应用已准备就绪,由于这种情况,我暂停了。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

当Receiver点击结束调用时,会调用doUnpublish方法,该方法会调用会话断开连接以断开与opentok会话的连接。会话断开导致呼叫者的委托connectionDestroyed被触发,因此呼叫者知道Receiver已从会话断开连接。

当Receiver从未接听电话时,问题就出现了,因此他从未连接到OpenTok会话。如果他从未连接到会话,那么来电者的connectionCreated和connectionDestroyed代表将永远不会被解雇。

解决问题的方法是设置计时器。在呼叫方结束时,在呼叫接收方时启动计时器。如果在1分钟内未触发connectionCreated委托,则表示接收方拒绝了呼叫或未接来电。