ngCordova/Ionic 应用程序在后台时推送通知
ngCordova/Ionic Push Notifications when application is in the background
我目前正在使用 ionic/ngcordova 构建一个 android 应用程序。我正在实施推送通知。我已经将推送通知实现为在 app.run(function(){..})
阶段注入的服务。注册部分有效,我收到一个包含 regid
的回调。此外,当应用程序处于活动状态时,会引发事件并收到通知。
我遇到的问题是,当应用程序进入后台时,根本收不到通知。我希望当应用程序不是 运行 或类似的东西时会引发本地通知,但绝对没有任何反应,这很奇怪。
过去几天我一直在网上搜索解决方案,但我一直无法找到任何对我来说它应该正常工作的信息。
以下是我的 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;
}]);
如果有帮助,我正在通过 .net 应用程序使用 PushSharp 来发送通知。任何帮助将不胜感激。
更新: 我正在使用以下 frameworks/libs:
- 离子框架 1.2.14-beta6
- 科尔多瓦 4.2.0
- 推送插件
对于像我一样烦恼了几天的其他人,解决方案非常简单...我在 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""}"));
否则,如果您的应用恰好是使用 Cordova 开发的,并且它当前不在前台,那么什么都不会发生,重复什么都不会发生。
向 gdelavald 致敬,他对 PushPlugin 的评论在这里为我指明了正确的方向:
我目前正在使用 ionic/ngcordova 构建一个 android 应用程序。我正在实施推送通知。我已经将推送通知实现为在 app.run(function(){..})
阶段注入的服务。注册部分有效,我收到一个包含 regid
的回调。此外,当应用程序处于活动状态时,会引发事件并收到通知。
我遇到的问题是,当应用程序进入后台时,根本收不到通知。我希望当应用程序不是 运行 或类似的东西时会引发本地通知,但绝对没有任何反应,这很奇怪。
过去几天我一直在网上搜索解决方案,但我一直无法找到任何对我来说它应该正常工作的信息。
以下是我的 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;
}]);
如果有帮助,我正在通过 .net 应用程序使用 PushSharp 来发送通知。任何帮助将不胜感激。
更新: 我正在使用以下 frameworks/libs:
- 离子框架 1.2.14-beta6
- 科尔多瓦 4.2.0
- 推送插件
对于像我一样烦恼了几天的其他人,解决方案非常简单...我在 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""}"));
否则,如果您的应用恰好是使用 Cordova 开发的,并且它当前不在前台,那么什么都不会发生,重复什么都不会发生。
向 gdelavald 致敬,他对 PushPlugin 的评论在这里为我指明了正确的方向: