Ionic Local Notifications触发状态更改

时间:2017-07-11 21:47:41

标签: cordova firebase ionic-framework notifications angularfire

我正在为我的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变量。

我甚至不确定我想要做什么甚至可以通过本地通知?

1 个答案:

答案 0 :(得分:0)

对于该用例,您必须实现远程通知。您需要在服务器上添加一个钩子,因此当订单更改时,您还可以使用node-apns或Ionic Push等服务发送通知。使用Ionic无法在后台修改本地通知。