我已经尝试了几个月的时间来实现一个接收通知的应用程序,该通知的内容我想存储在应用程序的数据库中。我正在使用Firebase Messagging插件,并且在前台和后台都可以正确接收通知。
但是,在后台,我无法执行回调,而无需用户明确按下通知。同样,当应用程序未打开时,也无法增加其标志。
现在,我不明白诸如WhatsApp,Telegram之类的应用程序以及非凡人制作的任何其他应用程序如何工作。他们如何才能获得背景数据,管理徽章,同步消息等?因此,据说Firebase之类的服务在后台受到限制。即使使用Background Mode之类的插件,当用户关闭应用程序时,它也会被Android暂停。
我当前用于处理通知的代码如下:
// In foreground (WORKS)
this.firebaseMessaging.onMessage().subscribe((notificacion) => {
// Insert in DB
...
});
// In background (DOESN'T WORK)
this.firebaseMessaging.onBackgroundMessage().subscribe((notificacion) => {
// Insert in DB
...
});
还剩下什么选择?对我而言,唯一发生的事情是仅在前台和后台使用通知作为警告。因此,每次打开应用程序时,我都必须与服务器(包括徽章管理)一起调用消息同步回调。
如果有人有更好的方法,如果您对这个问题稍加了解,我将不胜感激。
非常感谢您
答案 0 :(得分:0)
好吧,一年多以后,我认为是时候解决这个问题了。我这样解决了这个问题:
getMessages()
this.firebaseMessaging.onMessage().subscribe((notificacion) => {
getMessages();
});
this.firebaseMessaging.onBackgroundMessage().subscribe((notificacion) => {
getMessages();
});
app.component.ts
个文件:this.platform.ready().then(() => {
getMessages();
// Extra stuff like this.statusBar.styleDefault(); or this.splashScreen.hide();
});
这样,所有情况都被考虑了!您应该牢记,像Whatsapp或Telegram之类的应用程序是使用Java或Kotlin之类的官方技术开发的,它们不仅具有官方的本机插件,而且其代码是本机执行的,而不是像Cordova或Capacitor框架那样在受限的浏览器中执行