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