Вылетает приложение Ionic 3 Angular 5 на Android Opentok - PullRequest
0 голосов
/ 19 февраля 2019

Я создал гибридное приложение, использующее ionic 3 angular 5. Это приложение использует opentok для видеосвязи.Я установил Python-сервер для opentok на моем Mac, и он работает нормально.Нет, я пытаюсь подключиться к тому же серверу через гибридное приложение.Я сгенерировал идентификатор сессии на сайте opentok.Я также создал токен издателя на том же сайте и использовал его в приложении.Я могу видеть оба потока, но как только издатель из клиента инициализируется, приложение вылетает.

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';

declare var OT:any;
declare var Cordova: any;

@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {
  session: any;
   publisher: any;
   apiKey: any;
   sessionId: string;
   token: string;

   constructor(public navCtrl: NavController) {
     this.apiKey = '46271262';
        this.sessionId = '1_MX40NjI3MTI2Mn5- 
     MTU1MDU2MTE3NDk4OX5RcmQzSmQ2Z2VzZnl4RmNXNEY5ckJQc0V-fg';
    this.token = 
    'myTokenGoesHere';
    }

  startCall() {
    this.session = OT.initSession(this.apiKey, this.sessionId);

    this.session.on({
     streamCreated: (event) => {
    this.session.subscribe(event.stream, 'subscriber');
    this.session.subscribe.subscribeToVideo = true
    OT.updateViews();
      },
     streamDestroyed: (event) => {
       console.log(`Stream ${event.stream.name} ended because 
  ${event.reason}`);
    OT.updateViews();        
    }
    });


     this.session.connect('myTokenGoeshere', () => {
      this.publisher = OT.initPublisher('publisher');
      alert("Publish Started")

      this.session.publish(this.publisher);
     });
     }

    }

1 Ответ

0 голосов
/ 23 февраля 2019

TokBox Developer Evangelist здесь.

Похоже, вы публикуете без проверки, был ли сеанс подключен без ошибки.Недавно в плагине Cordova OpenTok было исправлено несколько ошибок, которые исправили проблему с обработчиком ошибок для метода session.connect.Вы можете изменить свой ионный код на что-то вроде этого:

this.session = OT.initSession(apiKey, sessionId);
this.publisher = OT.initPublisher('publisher');
this.session.on({
  streamCreated: (event) => {
    this.session.subscribe(event.stream, 'subscriber');
  },
  streamDestroyed: (event) => {
    console.log(`Stream ${event.stream.name} ended because ${event.reason}`);
  },
 sessionConnected: event => {
    this.session.publish(publisher);
  },
});

this.session.connect(this.token, (error) => {
   if (error) {
      console.log('There was an error connecting');
   }
});

Я также пошел дальше и обновил примеры в OpenTok-Ionic-Samples и OpenTok-Репозитории Cordova-Samples , отражающие изменения кода примера для исправления ошибки.

...