У меня есть приложение в Ionic4, которое получает push-уведомления FCM для различных обновлений данных. Push работает без проблем, в полезную нагрузку данных уведомления я помещаю различные теги, которые затем использую в приложении, чтобы изменить поведение в соответствии с полезной нагрузкой, например, изменить заголовок и описание контроллера оповещений, который я использую для управления передним планом. уведомления:
this.FCM.onNotification()
.subscribe( data => {
if (data.wasTapped) {
this.router.navigateByUrl(data.mobile_page);
} else {
this.presentAlertConfirm(data);
//this.router.navigateByUrl(data.mobile_page);
}
});
[...]
async presentAlertConfirm(data) {
var dataheader;
// Verifico il tipo di messaggio nel payload della notifica push
if (data.msgtype == 'msg') {
dataheader = 'Nuovo Messaggio';
}
[...]
var messageurl = data.mobile_page;
const alert = await this.alertController.create({
header: dataheader,
message: 'Premere OK per visualizzare',
buttons: [
{
text: 'Ignora',
role: 'cancel',
cssClass: 'secondary',
handler: (blah) => {
console.log('Confirm Cancel: blah');
}
}, {
text: 'OK',
handler: () => {
this.router.navigateByUrl(data.mobile_page);
console.log('Confirm Okay');
}
}
]
});
Пока что эта часть работает без проблем. Если я нахожусь в приложении и получаю, например, новое сообщение, появится всплывающее окно «Предупреждение», и я смогу нажать «ОК», чтобы перейти на страницу, где отображается сообщение.
Здесь начинается сложная часть, которую я не смог решить самостоятельно. Если я получаю другое сообщение , когда я нахожусь на странице сообщения , я получаю всплывающее окно «Предупреждение», но даже если я нажимаю «ОК», представление не отображается снова, и новое сообщение не отображается. В качестве обходного пути я добавил кнопку обновления и средство обновления ионов на странице, которая выполняет эту работу, но я хотел бы знать, возможно ли даже добиться того, что я ищу, чтобы новое сообщение отображалось без необходимость вручную нажать кнопку обновления или проведите пальцем вниз, чтобы активировать ион-освежитель.
Это код, который у меня есть в ngOnInit () на странице сведений о сообщении:
this.badge.clear();
this.getLoggedUserId();
this.getMessageSingleThread(this.route.snapshot.paramMap.get('thread_id'));
Функция getMessageSingleThread вызывает метод rest в моем веб-сервисе, и этот метод следует вызывать после нажатия OK во всплывающем окне с уведомлением.
Я попробовал кучу разных решений, найденных здесь и на других сайтах, включая NgZone, но безуспешно.
Я уверен, что я делаю что-то глупое.
Пока что все примеры, где используется одна страница с подпиской FCM и перезагрузкой, что, я уверен, является рабочим решением, но не применимо к моему случаю, так как у меня есть многостраничное приложение, и FCM закодировано в приложении. component.ts.
Большое спасибо