Riv*_*ven 5 javascript sockets typescript angular ionic4
出于背景目的,我在离子文档(本机和非本机)以及其他页面中进行了深入搜索,发现可能有实现此目的的可能性(即使关闭了应用程序,也要继续运行订阅),但是我可以我根本不知道应该在哪里放置BakckgroundMode插件才能正常工作……(我认为该插件无法在我的设备上正常工作),但是很难检查该东西,因为您无法检查设备如果它在chrome:// inspect的背景模式下...
这是BackgroundMode插件:
https://github.com/katzer/cordova-plugin-background-mode
我安装了backgroundMode 0.7.2,它不是最实用的插件,但是尝试安装最新的插件会使我在构建时出现错误,因此我尝试了此版本并可以正常工作。
在文档中,我看到以下内容:
该插件创建对象cordova.plugins.backgroundMode,并且在触发deviceready事件后可以访问该插件。
因此,为了运行后台模式,在构造函数内部的page.ts中(稍后我将讨论为什么在构造函数中),我将:
document.addEventListener('deviceready', ()=> {
this.backgroundMode.enable();
this.backgroundMode.setDefaults(
{
title: 'executing in bg mode...',
text: 'background mode was activated successfully!',
color: '#fff',
resume: true,
silent: false
}
);
this.backgroundMode.disableWebViewOptimizations();
this.backgroundMode.on('activate').subscribe(()=>{
this.isAcceptedObservable = this.localNotifications.on('yes').subscribe(res =>{
console.log('confirmed!');
this.backgroundMode.unlock();
});
//And more observables...
});
});
Run Code Online (Sandbox Code Playgroud)
即使关闭应用,backgroundMode.on('activate')订阅中的订阅也是我需要保持运行的东西。
之所以将代码放在构造函数中,是因为我还使用ngx-socket-io来侦听我创建的节点中套接字服务器的发射和广播功能,因此链接到套接字的订阅之一事件是:
this.getInvitationSubscriber = this.getInvitation().subscribe(data =>{
this.invitations.push(data);
this.showNotification({
title: 'Invitation received!',
text: 'Someone invited you!',
icon: data['from']['avatar_src'],
attachments: [data['from']['invitation_src']]
});
console.log(this.invitations);
});
Run Code Online (Sandbox Code Playgroud)
在ionViewWillEnter中我打电话:
ionViewWillEnter{
this.socket.connect();
}
Run Code Online (Sandbox Code Playgroud)
并且此函数在构造函数之外:
getInvitation(){
let observable = new Observable(observer =>{
this.socket.on('subject', data =>{
observer.next(data);
});
});
return observable;
}
Run Code Online (Sandbox Code Playgroud)
我期望继续运行在backgroundMode.on('activate')函数内部的构造函数中的“通知侦听器”,即使应用程序已关闭也可以接收通知,但是我不知道ngx-socket-io和我的结构。
我也已经在app.module提供程序和otherpage.module.ts提供程序中注入了后台模式并正确导入,所以这不是错误,但是我没有收到通知...
我知道通知调度是正确的,因为如果我简单地尝试不使用backgroundMode并将该订阅置于backgroundMode.on('activate')订阅之外,我会再次收到通知,但仅在应用程序处于前台或挂起状态时才有效。 ..
归档时间: |
|
查看次数: |
80 次 |
最近记录: |