Android Opentok 上的 Ionic 3 Angular 5 应用程序崩溃

Posted

技术标签:

【中文标题】Android Opentok 上的 Ionic 3 Angular 5 应用程序崩溃【英文标题】:Ionic 3 Angular 5 app crashers on Android Opentok 【发布时间】: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 开发者布道者在这里。当崩溃发生时,你能分享一下堆栈跟踪吗?这适用于 iosandroid 应用程序吗?对于 iOS,请确保您已在 info.plist 文件中添加了麦克风和摄像头的权限。 Android 插件应该会为您处理权限,但以防万一,请确保已授予权限。 感谢您的回复。它在 Android 上崩溃了。 您好 Evangelist,我可以通过生成新令牌来解决崩溃问题。我尝试创建一个本机 IOS 应用程序并收到 code1500 错误。它与令牌有关。所以我生成了一个在 android 应用程序中使用它的新令牌,并且崩溃得到了解决。 现在我遇到了另一个问题,当我从混合应用程序创建 IOS 构建时,我可以看到从 python 服务器到应用程序的流,但看不到从 IOS 应用程序到 python 服务器的流。我再次认为这可能与令牌有关?我尝试生成一个新的令牌,但仍然面临同样的问题。 【参考方案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-Samples 和 OpenTok-Cordova-Samples 存储库中的示例,这些示例反映了错误修复的示例代码更改。

【讨论】:

以上是关于Android Opentok 上的 Ionic 3 Angular 5 应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Cordova Opentok 插件中隐藏/显示视频以在 Ionic 中进行视频通话?

白屏死机 - Android 上的 Ionic 2

调用GET HTTP时android上的ionic3错误

Firebase + Ionic + Cordova s​​ignInWithRedirect 重定向到 Android 上的 localhost

Ionic 3.x:iOS 上的推送通知不起作用(适用于 Android?) Ionic Native Plugin Push

如何在 Android 上的 Ionic Framework 中执行跨域 http 请求?