恢复事件并单击通知会导致重复

时间:2015-01-04 23:36:40

标签: javascript ios angularjs cordova apple-push-notifications

基本上,我有一个使用Ionic Framework的Angular应用程序(基于Cordova),我在iOS设备上运行。

在主(父)控制器中,我有这段代码:

    window.onNotificationAPN = function (event) {
        if (event.alert) {
            PushedNotificationPublisher.publish(angular.fromJson(event.data)); //custom publisher
    };

    document.addEventListener("resume", resume, false);
    function resume() {
        $rootScope.$apply(function () {
            $rootScope.$broadcast('onResumeApp');
        });
    }

基本上,它定义了一个resume函数(在从后台输入图标应用时触发),以及在横幅中点击新通知时的回调。

在某些控制器上,我会听到推送通知和resumeApp事件功能。 当用户点击图标而不是通知时,resumeApp事件是刷新某些数据所必需的 当用户已将应用程序置于前台时,需要推送器,以便他只处理通知。

当应用程序处于后台并且用户点击通知时,两个路径都会被执行:推送器和resumeApp可能导致某些处理过的数据重复。 实际上,resumeApp会触发完整的数据库刷新,而通知会添加一些数据,当然包含数据库刷新。

当用户点击横幅中的通知时,是否有一种有效的方法可以避免处理简历事件。

1 个答案:

答案 0 :(得分:0)

解决方案非常简单,我刚刚找到它:

    window.onNotificationAPN = function (event) {
        if (event.foreground == 1 && event.alert) {  //detect if the app was still on foreground
            PushedNotificationPublisher.publish(angular.fromJson(event.data)); //custom publisher
    };

否则,如果应用程序处于后台,则只有resume事件可以解决问题。