【问题标题】:Ionic 3 Angular 5 app crashers on Android OpentokAndroid Opentok 上的 Ionic 3 Angular 5 应用程序崩溃
【发布时间】:2019-02-19 12:19:45
【问题描述】:

我使用 ionic 3 angular 5 创建了一个混合应用程序。此应用程序使用 opentok 进行视频通话。我在我的 Mac 上为 opentok 安装了一个 python 服务器,它工作正常。不,我正在尝试通过混合应用程序连接到同一台服务器。我已经生成了一个会话 id 表单 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);
     });
     }

    }

【问题讨论】:

  • TokBox 开发者布道者在这里。当崩溃发生时,你能分享一下堆栈跟踪吗?这适用于 iOS 或 Android 应用程序吗?对于 iOS,请确保您已在 info.plist 文件中添加了麦克风和摄像头的权限。 Android 插件应该会为您处理权限,但以防万一,请确保已授予权限。
  • 感谢您的回复。它在 Android 上崩溃了。
  • 您好 Evangelist,我可以通过生成新令牌来解决崩溃问题。我尝试创建一个本机 IOS 应用程序并收到 code1500 错误。它与令牌有关。所以我生成了一个在 android 应用程序中使用它的新令牌,并且崩溃得到了解决。
  • 现在我遇到了另一个问题,当我从混合应用程序创建 IOS 构建时,我可以看到从 python 服务器到应用程序的流,但看不到从 IOS 应用程序到 python 服务器的流。我再次认为这可能与令牌有关?我尝试生成一个新的令牌,但仍然面临同样的问题。

标签: ionic3 opentok


【解决方案1】:

这里是 TokBox 开发者宣传员。

您在发布时似乎没有验证会话是否已无错误地连接。 Cordova OpenTok Plugin 中有一个最近的错误修复,它修复了 session.connect 方法的错误处理程序问题。您可以将您的 Ionic 代码修改为以下内容:

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-SamplesOpenTok-Cordova-Samples 存储库中的示例,这些示例反映了错误修复的示例代码更改。

【讨论】:

    猜你喜欢
    • 2021-08-21
    • 2012-02-27
    • 1970-01-01
    • 2018-10-29
    • 1970-01-01
    • 2022-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多