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 开发者布道者在这里。当崩溃发生时,你能分享一下堆栈跟踪吗?这适用于 ios 或 android 应用程序吗?对于 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 中进行视频通话?
Firebase + Ionic + Cordova signInWithRedirect 重定向到 Android 上的 localhost
Ionic 3.x:iOS 上的推送通知不起作用(适用于 Android?) Ionic Native Plugin Push