angular - Ionic 3 Local Notification 太多次推送到特定页面
问题描述
我是 Ionic 的新手,我可能错过了开发一个简单应用程序的一些重要细节,该应用程序应该通过打开本地通知显示特定页面。问题是:我制作了一个按钮,通过单击它来生成本地通知。如果我第一次生成通知然后单击它,它就像一个魅力,但是当我生成第二个通知时,如果我单击它,应用程序会推送两次新页面,第三次推送三次以此类推,即使我通过导航栏回到根页面。
有人可以帮助我理解我做错了什么?太感谢了
这是根页面的代码
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { LocalNotifications } from '@ionic-native/local-notifications';
import { Platform } from 'ionic-angular';
import { Page2Page } from '../page2/page2';
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
constructor(public navCtrl: NavController, private localNotifications: LocalNotifications, public platform: Platform) {
}
click(){
this.platform.ready().then(()=>{
this.localNotifications.schedule({
id: 1 ,
title: 'Notifica',
text: 'Single ILocalNotification',
})
this.localNotifications.on('click').subscribe(()=>{
console.log("Notification Subscribed")
this.navCtrl.push(Page2Page);
})
})
}
}
这是第二页(实际上什么也没做)
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
/**
* Generated class for the Page2Page page.
*
* See https://ionicframework.com/docs/components/#navigation for more info on
* Ionic pages and navigation.
*/
@IonicPage()
@Component({
selector: 'page-page2',
templateUrl: 'page2.html',
})
export class Page2Page {
constructor(public navCtrl: NavController, public navParams: NavParams) {
}
ionViewDidLoad() {
console.log('ionViewDidLoad Page2Page');
}
}
解决方案
我解决了这个问题。前面的答案是对的,我只需要订阅一次,但首先我必须检查平台是否准备就绪,否则科尔多瓦会给我一个错误,应用程序将无法运行。
这是代码
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { LocalNotifications } from '@ionic-native/local-notifications';
import { Platform } from 'ionic-angular';
import { Page2Page } from '../page2/page2';
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
constructor(public navCtrl: NavController,
private localNotifications: LocalNotifications,
public platform: Platform) {
this.platform.ready().then(()=>{
this.localNotifications.on('click').subscribe(()=>{
console.log("Notification Subscribed")
this.navCtrl.push(Page2Page);
})
})
}
click(){
this.platform.ready().then(()=>{
this.localNotifications.schedule({
id: 1 ,
title: 'Notifica',
text: 'Single ILocalNotification',
})
})
}
}
推荐阅读
- javascript - 更改尺寸并旋转后更改 div 的字体
- .net-core - 使用 azure devops 管道进行 nunit 测试
- android - ionic5 android在键盘显示时覆盖输入并且内容不滚动
- python-3.x - 如何确定 hidapi.dll 的安装位置?
- javascript - vscode中Windows 10中的node.js安装错误
- mysql - MySQL 8 + 正则表达式词边界
- node.js - 使用 NodeJS 解密 PDF
- jquery - 供个人使用的数据表
- css - 如何在不使用 margin-top 的情况下将一组元素定位在移动设备屏幕的底部?
- visual-studio-code - Windows 10 上的 vs 代码中的“liveSass.command.watchMySass 未找到”和“扩展主机意外终止”