6

Aktualnie buduję aplikację na Androida za pomocą ionic/ngcordova. Jestem w trakcie wdrażania powiadomień push. Zaimplementowałem powiadomienia push jako usługę, która jest wstrzykiwana na etapie app.run(function(){..}). Część rejestracyjna działa i otrzymuję wywołanie zwrotne zawierające regid. Ponadto, gdy aplikacja jest w stanie aktywnym, zdarzenie jest wywoływane i otrzymywane jest powiadomienie.ngCordova/Ionic Powiadomienia push, gdy aplikacja jest w tle

Problem polega na tym, że kiedy aplikacja przechodzi w tło, powiadomienia nie są odbierane w ogóle. Spodziewam się, że powiadomienie lokalne zostanie podniesione, gdy aplikacja nie działa lub coś podobnego, ale absolutnie nic się nie dzieje, co jest dziwne.

Przeszukałem internet przez kilka ostatnich dni, szukając rozwiązania, ale nie udało mi się znaleźć niczego, co wskazuje mi, że powinno działać.

co następuje moje notificationService.js wewnątrz mojej aplikacji

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; 
}]); 

Jeśli to nie pomaga, używam PushSharp za pośrednictwem aplikacji .NET w celu dostarczenia powiadomienia. Każda pomoc będzie bardzo ceniona.

UPDATE: Używam następujących ram/libs:

  • Ionic ramowa 1.2.14-beta6
  • Cordova 4.2.0
  • PushPlugin

Odpowiedz

3

dla nikogo poza tym, który wyciągał włosy na kilka dni, tak jak ja, rozwiązanie było naprawdę proste ... Brakowało mi dwóch właściwości w moim wymaganiu QueueNotification Pushsharp ul. Więc korzystając z przykładem podanym na repo PushSharp github tutaj: 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\"}")); 

musi zostać zaktualizowana, aby dodać właściwości brakujące:

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""}")); 

W przeciwnym razie aplikacja dzieje się opracowane przy użyciu Cordova, a nie jego obecnie na pierwszym planie, nic, powtórzyć nic się nie stanie.

Wskazówka mój kapelusz gdelavald ze swoim komentarzu PushPlugin dla wskazujące mnie we właściwym kierunku tutaj:

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

Powiązane problemy