无法在点击事件时设置离子本地通知(奇怪的语法错误)
Posted
技术标签:
【中文标题】无法在点击事件时设置离子本地通知(奇怪的语法错误)【英文标题】:Not able to set Ionic Local Notification On Click Event (weird syntax error) 【发布时间】:2018-07-23 13:07:36 【问题描述】:我在我的应用程序中使用Ionic Local Notifications。到目前为止,我能够在给定时间触发通知。我还想在通知的点击事件上设置自定义操作。但是当我因为语法错误而无法这样做时。 我看了很多example codes 喜欢这个。这是大家用来为点击事件设置动作的通用代码。
this.plt.ready().then((readySource) =>
this.localNotifications.on('click', (notification, state) =>
let json = JSON.parse(notification.data);
let alert = alertCtrl.create(
title: notification.title,
subTitle: json.mydata
);
alert.present();
)
);
但由于某些未知原因,此代码对我显示语法错误
上面写着
[ts] Expected 1 arguments, but got 2.
(property) HomePage.localNotifications: LocalNotifications
这是我完整的 home.ts 代码: 注意- 我从 home.html 调用提交函数。通知工作正常并按时触发。我只需要在点击操作上实现自定义。
import Component from '@angular/core';
import IonicPage, NavController, NavParams, Platform, AlertController from 'ionic-angular';
import LocalNotifications from '@ionic-native/local-notifications';
/**
* Generated class for the HomePage page.
*
* See https://ionicframework.com/docs/components/#navigation for more info on
* Ionic pages and navigation.
*/
@IonicPage()
@Component(
selector: 'page-home',
templateUrl: 'home.html',
)
export class HomePage
data = title: '', description: '', date: '', time: '' ;
constructor(public navCtrl: NavController, private localNotifications: LocalNotifications, public navParams: NavParams, public platform: Platform,
public alertCtrl: AlertController)
this.platform.ready().then((readySource) =>
this.localNotifications.on('click', (notification, state) =>
let alert = this.alertCtrl.create(
title: 'Notification Clicked'
);
alert.present();
);
);
submit()
console.log(this.data);
var date = new Date(this.data.date + " " + this.data.time);
var title = this.data.title;
var text = this.data.description;
console.log(date);
this.localNotifications.schedule(
title: title,
text: text,
trigger: at: date,
led: 'FF0000',
sound: this.setSound(),
actions: [
id: 'yes', title: 'Yes' ,
id: 'no', title: 'No'
]
);
setSound()
if (this.platform.is('android'))
return 'file://assets/sounds/Rooster.mp3'
else
return 'file://assets/sounds/Rooster.caf'
ionViewDidLoad()
console.log('ionViewDidLoad HomePage');
【问题讨论】:
【参考方案1】:正确的函数是:
this.localNotifications.on('click').subscribe(notification =>
// Insert your logic here
);
我在 ionic 论坛中找到了这个答案:here
【讨论】:
【参考方案2】:on()
函数返回一个observable
。 callback
没有位置。所以你只是在做
this.localNotifications.on('click').subscribe((notification, state) =>
let alert = this.alertCtrl.create(
title: 'Notification Clicked'
);
alert.present();
);
插件可能无法同时使用通知和状态参数解析,请使用单个参数,例如 resolve: any
,记录并查看插件在 click
事件中返回的内容。
【讨论】:
它还显示语法错误:[ts] '(notification: any, state: any) => void' 类型的参数不可分配给'(value: any) => void 类型的参数'。 (参数)状态:任何 这意味着返回的 observable 没有我们预期的两个参数(通知和状态)。这是我讨厌 ionic-native 文档的一件事。他们不会告诉你 observable 解决了什么样的响应。只需设置为 (response: any) 并记录响应以查看您返回的内容。 .subscribe((response: any) => console.log(response)). 我像你说的那样试过了 - this.localNotifications.on('event').subscribe((response: any) => console.log('response:'); console.log(response ); );但我的控制台没有显示任何内容。 对不起。我想我把你和“事件”混淆了。我的意思是任何类型的 DOM/设备事件中的“事件”。比如“点击”。我已经编辑了我的答案。【参考方案3】:this.localNotifications.on('click', (notification, state) =>
在这一行中,on 方法只需要一个参数,但你传递了两个
【讨论】:
我明白了,兄弟,我也可以阅读错误日志。我的问题是如何修复它并添加点击操作以上是关于无法在点击事件时设置离子本地通知(奇怪的语法错误)的主要内容,如果未能解决你的问题,请参考以下文章
使用cordova本地通知和离子设置重复间隔的特定数据和时间