【问题标题】:How to handle push notifications with Cordova as they arrive and the app is closed如何在 Cordova 到达并且应用程序关闭时处理推送通知
【发布时间】:2015-04-07 10:43:55
【问题描述】:
当通知到达并且应用程序当时关闭时,我可以以某种方式检测推送通知到达并使用cordova处理它吗?我正在使用cordova com.clone.phonegap.plugins.pushplugin,但是当通知到达并且应用程序关闭时,我使用插件javascript代码注册的事件侦听器不是“活动的”,我无法检测到到达。是否有可能使用cordova以其他方式实现这一目标?
【问题讨论】:
标签:
cordova
push-notification
phonegap-plugins
phonegap-pushplugin
【解决方案1】:
如果您要求的是 iOS,那么没有。您的应用无法在后台处理用户通知。如果用户点击通知横幅,您的应用将打开,您将收到带有通知有效负载的回调,该有效负载可以转发到 JavaScript。
如果您想处理静默后台通知,则必须在本机中完成,因为 JavaScript 执行在后台 AFAIK 中暂停。你可以实现一个队列,它只存储一个后台通知,然后在应用返回到活动状态时将其分派给 JavaScript。
【解决方案2】:
使用官方PushPlugin。
在Android中,如果应用程序关闭,将在状态栏中创建通知,否则将有效负载传递给您的应用程序
【解决方案3】:
我不确定这个解决方案,但你试过这个吗:-
在didReceiveRemoteNotification方法中添加这个
NSString* jsString = [NSString stringWithFormat:@"localStorage.NotificationId=%@;", dynamicNotificationId];
[self.viewController.webView stringByEvaluatingJavaScriptFromString:jsString];
【解决方案4】:
您可以在应用关闭时使用插件 phonegap-plugin-push > 1.6.2 触发 on("notification") 事件,并将后端响应更改为:
{
notification : {
title : 'yourTitle',
message : 'yourMessage'
}
}
到
{
data : {
title : 'yourTitle',
message : 'yourMessage',
content-available : "1" //only for IOS
}
}