我正在为我的Table Booking离子应用程序使用离子Local Notifications插件。我有一个控制Ionic App的网络仪表板。
当仪表板中的预订被批准且状态发生变化时,我试图获得本地通知以触发。
我的通知很有效但是我有一个我无法弄清楚的重大问题。
在离子应用程序中,用户会看到所有预订的列表,然后当他们选择预订时,会打开一个页面,其中包含所有预订详细信息,包括对其预订状态的直观参考,即待处理,已批准或已取消。
这是我的组件:
export class OrderDetailsPage {
orderId: any;
orderDetails: any = {
status: ''
};
booking: any = {};
constructor(private localNotifications: LocalNotifications, public modalCtrl: ModalController, private calendar: Calendar, public af: AngularFireDatabase, private device: Device, private appAvailability: AppAvailability, private platform: Platform, public navCtrl: NavController, public navParams: NavParams) {
this.orderId = this.navParams.get('id');
this.af.object('/orders/' + this.orderId).subscribe(res => {
this.orderDetails = res;
//Call my check status function to trigger notification
this.checkStatus();
var orderId = res.orderId;
this.af.list('/bookings', {
query: {
orderByChild: 'orderId',
equalTo: orderId
}
}).subscribe(res => {
this.booking = res[0];
});
})
}
checkStatus(){
if (this.orderDetails.status == 'Accepted') {
this.localNotifications.schedule({
id: 1,
title: 'Your Booking Was Accepted!',
text: 'Your booking has been Accepted by the restaurant!',
sound: ''
});
}
}
}
orderId从订单列表页面传递,这有助于我获得在订单详情页面上显示的特定订单。
我面临的问题是通知仅在我真正进入订单详细信息页面时触发,这是毫无意义的。
我想全局检测当特定订单状态从特定用户和特定预订更改时,从Pending(默认情况下在firebase中设置)到Approved,而不是当用户进入订单详细信息页面时。 / p>
我考虑在应用程序的根目录中尝试代码,但是我无法从navParams获取id以分配给orderId变量。
我甚至不确定我想要做什么甚至可以通过本地通知?
答案 0 :(得分:0)
对于该用例,您必须实现远程通知。您需要在服务器上添加一个钩子,因此当订单更改时,您还可以使用node-apns或Ionic Push等服务发送通知。使用Ionic无法在后台修改本地通知。