6

В настоящее время я создаю приложение для Android с помощью ionic/ngcordova. Я собираюсь внедрить push-уведомления. Я реализовал push-уведомления как услугу, которая вводится на этапе app.run(function(){..}). Регистрационная часть работает, и я получаю обратный вызов, содержащий regid. Кроме того, когда приложение находится в активном состоянии, событие поднимается и принимается уведомление.ngCordova/Ionic Push Уведомления, когда приложение находится в фоновом режиме

Проблема, с которой я сталкиваюсь, заключается в том, что когда приложение переходит в фоновый режим, уведомления не принимаются вообще. Я ожидал бы, что локальное уведомление будет поднято, когда приложение не работает или что-то подобное, но абсолютно ничего не происходит, что странно.

Я потратил сеть на последние пару дней на поиски решения, но я не смог найти ничего, что указывает на то, что он должен просто работать.

Следующая является моим notificationService.js внутри моего приложения

app.factory('notificationService', ['$cordovaPush', function($cordovaPush){ 

    var dataFactory = {}; 

    // 
    // When the device is ready and this service has been plumbed in... 
    document.addEventListener("deviceready", function(){ 

     console.log("initializing push notifications..."); 

     _register(); 

    }, false); 


    // 
    // Registers the device for push notifications... 
    var _register = function(){ 

     var config = {}; 

     if (device.platform == 'android' || device.platform == 'Android' || device.platform == "amazon-fireos"){ 

      // TODO: centralise this value as it can change... 
      config = { 
       senderID: "448168747432", 
       ecb: "onNotificationGCM" 
      }; 

     }else { 
      // iOS 
      config = { 
       "badge":"true", 
       "sound":"true", 
       "alert":"true" 
      }; 

      // Can add the following property to the config object to raise a callback with the information if need be... 
      // "ecb": "onNotificationRegisterAPN" 
     } 

     $cordovaPush.register(config).then(function(result){ 

        // 
        // Typically returns "ok" for android and devicetoken for iOS 
      console.log(result); 

     }); 
    }; 

    window.onNotificationGCM = function(result){ 

     console.log(result); 

     /* 
     I get called when the app is in the foreground, but nothing happens when the app is in the background. 
     */ 

    }; 

    dataFactory.register = _register; 

    return dataFactory; 
}]); 

Если это поможет, я использую PushSharp с помощью приложения .net для доставки уведомлений. Любая помощь будет принята с благодарностью.

UPDATE: Я использую следующие фреймворки/LIBS:

  • Ионные Framework 1.2.14-beta6
  • Кордова 4.2.0
  • PushPlugin

ответ

3

Для тех, кто другой, кто вытягивал волосы за пару дней, как я, решение было очень простым ... Мне не хватало двух свойств в моей просьбе Pushsharp QueueNotification ул. Таким образом, используя пример, приведенный на PushSharp GitHub репо здесь: https://github.com/Redth/PushSharp#sample-code

push.QueueNotification(new GcmNotification().ForDeviceRegistrationId("DEVICE-REGISTRATION-ID-HERE").WithJson("{\"alert\":\"Hello World!\",\"badge\":7,\"sound\":\"sound.caf\"}")); 

необходимо обновить, чтобы добавить недостающие свойства:

push.QueueNotification(new GcmNotification().ForDeviceRegistrationId("DEVICE REGISTRATION ID HERE") 
         .WithJson(@"{""alert"":""This is the future"",""badge"":7,""sound"":""sound.caf"",""title"":""Status Bar title"",""message"":""Some text you want to display to the user""}")); 

В противном случае, если ваше приложение случается быть разработано с использованием Кордовы и его не в настоящее время на переднем плане ничего, повторить ничего не произойдет.

Совет шляпу перед gdelavald с его комментарием на PushPlugin указал мне в правильном направлении здесь:

https://github.com/phonegap-build/PushPlugin/issues/212

Смежные вопросы