как отправить пользователя на определенную страницу при нажатии локального уведомления ngCordova, когда приложение находится в фоновом режиме

Отправка пользователя в определенное представление работает при нажатии локального уведомления, но только когда приложение находится на переднем плане, когда я закрываю приложение и получаю уведомление, оно отправляется только на главную страницу, которая определена в

$urlRouterProvider.otherwise("/");

например, когда мы не используем WhatsApp и получаем уведомление о новом сообщении, и когда мы нажимаем на него, оно отправляет нас на эту конкретную страницу чата, а не на главную страницу WhatsApp, как я могу этого добиться?

контроллер:

$ionicPlatform.ready(function () {

    $scope.scheduleDelayedNotification = function () {
        var now = new Date().getTime();
        var _5_SecondsFromNow = new Date(now + 5 * 1000);

        $cordovaLocalNotification.schedule({
            id: 1,
            title: 'New Notification',
            text: 'Notification Message',
            at: _5_SecondsFromNow
        }).then(function (result) {
            alert("Notification Set");
        });

        cordova.plugins.notification.local.on("click", function (notification, state) {
                $state.go('feedback');
        }, this)

        };
});

app.js

var ionicApp = angular.module('starter', ['ionic', 'localNotificationModule']);

ionicApp.run(function($ionicPlatform) {
  $ionicPlatform.ready(function() {
    // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
    // for form inputs)
    if(window.cordova && window.cordova.plugins.Keyboard) {
      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
    }
    if(window.StatusBar) {
      StatusBar.styleDefault();
    }
  });
});

ionicApp.config(function($stateProvider, $urlRouterProvider) {
  $stateProvider
  .state('home', {
    url: '/',
    templateUrl: 'views/home.html'
  })
  .state('feedback', {
    url: '/feedback',
    templateUrl: 'views/feedback.html'
  });

  $urlRouterProvider.otherwise("/");

});

ОБНОВИТЬ:

services.js

servicesModule.service('FirstRunScheduling', ['$rootScope', '$ionicPlatform', '$cordovaLocalNotification', '$state', function($rootScope, $ionicPlatform, $cordovaLocalNotification, $state){

    var ref = new Firebase("https://feedback-system.firebaseio.com/TestTimeTable");

    ref.once("value", function(data) {
        var TestTimeTable = data.val().TestTimeTable;
        var notificationDate;
        var notificationID;
        if(data.val().first_run == false)
        {
            $ionicPlatform.ready(function () {
                for(var i in TestTimeTable)
                {
                    notificationDate = new Date(TestTimeTable[i].year, TestTimeTable[i].month, TestTimeTable[i].day, TestTimeTable[i].hour, TestTimeTable[i].minute, 0, 0);
                    notificationID = i + ref.getAuth().uid.split(":")[1];
                    $cordovaLocalNotification.schedule({
                        id: notificationID,
                        title: 'Feedback Reminder',
                        text: 'Please Provide Lecture Feedback',
                        at: notificationDate,
                        autoCancel: true
                    }).then(function (result) {
                        alert("Set");
                    });

                    cordova.plugins.notification.local.on("click", function (notification, state) {
                        $state.go('tabs.feedback');
                    }, this)
                }
            });
        }

        ref.update({
            first_run: true,
        });

    });

}]);

person Faizan Shakeel    schedule 20.06.2015    source источник


Ответы (1)


Если ваше приложение перезапускается, когда пользователь нажимает на уведомление, тогда

cordova.plugins.notification.local.on("click", ..)

еще не будет вызываться, так как вызывается только при создании нового локального уведомления.

Попробуйте зарегистрировать обработчик события уведомления внутри

$ionicPlatform.ready(...)
person dancampers    schedule 22.06.2015
comment
я новичок в angular и ionic, я понял, что я должен поставить его вне функции scheduleDelayedNotification, я попробую, спасибо - person Faizan Shakeel; 22.06.2015
comment
проблема снова, как вы знаете, это работало, но когда я делаю то же самое в сервисе, он не отправляет пользователя на эту страницу, проверьте обновленный код - person Faizan Shakeel; 01.07.2015
comment
это потому, что Cordove не определен, все вводится, но все же. - person Faizan Shakeel; 01.07.2015
comment
Моя ошибка, так и должно быть в браузере :S теперь работает - person Faizan Shakeel; 01.07.2015