Переподключение делегатов OpenToke не вызывается, когда inte rnet временно отключено для абонента / удаленного пользователя. - PullRequest
1 голос
/ 24 февраля 2020

Я попытался реализовать автоматическое c переподключение видео / аудиозвонков с помощью OpenTok SDK, и я использовал этот пример проекта в качестве ссылки - https://github.com/opentok/opentok-reconnection/.

Проблема, с которой мы столкнулись столкновение происходит, когда подключение абонента (удаленного пользователя) inte rnet сбрасывается или отключается, мы не получаем никаких перечисленных ниже методов обратного вызова (методы делегата openTok).

методы делегата OpenTok для автоматов c переподключение

- (void)sessionDidBeginReconnecting:(OTSession *)session
{
    [self showReconnectingAlert];
}

- (void)sessionDidReconnect:(OTSession *)session
{
    [self dismissReconnectingAlert];
}

- (void)sessionDidBeginReconnecting:(OTSession *)session
{
    [self showReconnectingAlert];
}

- (void)subscriberDidDisconnectFromStream:(OTSubscriberKit *)subscriber
{
    [self.reconnectingSpinner startAnimating];
    [self.subscriber.view addSubview:self.streamReconnectingView];
}

Издатель (вызывающая сторона) не получает событий об удаленном соединении, которое теряется или прерывается на мгновение. Но, с другой стороны, когда intex издателя rnet на мгновение отбрасывается или отключается, все методы обратного вызова вызываются правильно, и мы можем уведомить пользователя о сбрасывании сети с помощью «экрана переподключения интерфейса».

Подключение к сеансу

- (void)connectVideoSession
{
    OTError *error = nil;
    [session connectWithToken:kTokenID error:&error];// OTSession *session
    if (error) {
        [self showErrorAlert:[error localizedDescription]];
    }
}

После успешного подключения мы получаем метод обратного вызова

- (void)sessionDidConnect:(OTSession*)session
{
    // [ApplicationDelegate removeProgressHUD];
    NSLog(@"sessionDidConnect (%@)", session.sessionId);
    [self doPublish];
}

После этого, когда абонент присоединился к сеансу, мы будем получить уведомление с помощью другого метода обратного вызова

subscriberDidConnect

Затем мы можем подписаться на сеанс, опубликованный конечным пользователем (Удаленный пользователь)

Используемая версия

  • Версия OpenTok SDK - 2.16.3
  • Проверена на iOS версиях - iOS 12.4.5 и iOS 13.3.1

Успешный случай

  • Инициированный вызов от iPhone (Издатель)
  • За этим примером приложения - https://github.com/opentok/opentok-reconnection/
  • Присоединен к звонку с chrome на iMa c (Абонент) * 1 053 *
  • На мобильном устройстве я смог увидеть поток, опубликованный Chrome пользователем (iMa c), а на iMA C мне удалось увидеть поток, опубликованный мобильным пользователем.
  • Затем я отключил соединение inte rnet для iPhone (Publisher)
  • Затем вызываемые выше методы вызывают и все работает нормально.

Сбой (дело, с которым мы сталкиваемся)

  • Инициированный звонок от iPhone (Издатель)
  • За этим примером приложения - https://github.com/opentok/opentok-reconnection/
  • Присоединился к звонку с chrome на iMa c (Абонент)
  • Мне удалось увидеть поток на обоих устройствах.
  • Включено отключить соединение inte rnet для iMa c (подписчик)
  • Тогда вышеописанные методы не вызываются, и мы не можем показать пользовательский интерфейс переподключения для пользователя.

В этом случае все, что мы видим, это то, что представление подписчика приостанавливается до тех пор, пока не будет установлено соединение inte rnet для subscr. iber

  • Почему эти методы делегатов не работают, когда абонент (удаленный пользователь) inte rnet отброшен?
  • Пожалуйста, посоветуйте способ уведомить пользователя о том, что подписчик сталкивается с сброс сети!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...