如何在 Cordova 到达并且应用程序关闭时处理推送通知

Posted

技术标签:

【中文标题】如何在 Cordova 到达并且应用程序关闭时处理推送通知【英文标题】:How to handle push notifications with Cordova as they arrive and the app is closed 【发布时间】:2015-04-07 10:43:55 【问题描述】:

当通知到达并且应用程序当时关闭时,我可以以某种方式检测推送通知到达并使用cordova处理它吗?我正在使用cordova com.clone.phonegap.plugins.pushplugin,但是当通知到达并且应用程序关闭时,我使用插件javascript代码注册的事件侦听器不是“活动的”,我无法检测到到达。是否有可能使用cordova以其他方式实现这一目标?

【问题讨论】:

请提及您正在使用的平台。 【参考方案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

   

【讨论】:

以上是关于如何在 Cordova 到达并且应用程序关闭时处理推送通知的主要内容,如果未能解决你的问题,请参考以下文章

Ionic / Cordova:如何强制应用程序在启动时刷新,即使它在后台?

在 cordova/phonegap Android 应用程序上关闭屏幕后媒体停止播放

Cordova POST - 请求禁止 403。未到达 Dispatcher Servlet

cordova、Firebase、FCM 插件 - 在 iOS 的通知栏中不显示通知

Cordova:在后台运行应用程序时的事件

是否可以防止在 Cordova 中重新初始化应用程序?