应用程序位于前台时系统托盘中的FCM通知

时间:2017-12-17 19:01:17

标签: cordova firebase ionic-framework firebase-cloud-messaging cordova-plugin-fcm

当应用处于背景时,我能够在系统托盘中看到通知。

但是,即使应用程序位于前景,我也希望通知在系统托盘中可见。

我在Android上尝试了以下内容:

  • 从Firebase控制台发送通知:当应用在后台时,我可以在系统托盘 中看到通知。
  • 根据https://fcm.googleapis.com/fcm/send data和[{1}}付费点击notification XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder() .setSocketFactory(SocketFactory.getDefault()) .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled) .setServiceName("123.456.0.854")//service name .setHost("123.456.0.854") // host name .setPort(5222) //port .setUsernameAndPassword("phone", "admin") .setConnectTimeout(40000) .setCompressionEnabled(false).build(); connection = new XMPPTCPConnection(config); try { connection.connect(); connection.login("phone", "admin"); Presence presence = new Presence(Presence.Type.available); presence.setStatus("Available"); try { connection.sendStanza(presence); } catch (SmackException.NotConnectedException e) { e.printStackTrace(); } } catch (SmackException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (XMPPException e) { e.printStackTrace(); } OfflineMessageManager offlineMessageManager = new OfflineMessageManager(connection); try { System.out.println("Count is " +offlineMessageManager.getMessageCount()); } catch (SmackException.NoResponseException e) { e.printStackTrace(); } catch (XMPPException.XMPPErrorException e) { e.printStackTrace(); } catch (SmackException.NotConnectedException e) { e.printStackTrace(); } } }.start(); 发送帖子请求:同样,我只能在应用时看到系统托盘中的通知在背景中。

here提及:

  

包含通知和数据有效负载的消息,包括背景和   前景。在这种情况下,通知将传递给   设备的系统托盘,数据有效负载在附加功能中提供   您的启动器活动的意图。

我错过了什么?

我使用Android和Cordova / Ionic。

3 个答案:

答案 0 :(得分:0)

如果您希望在应用位于前台时显示通知,则必须发送带有数据有效负载的消息,然后编写代码以在您的应用中处理该消息,如下所述您引用的文档。

当您发送带有通知有效负载的邮件时,FCM的工作方式与您所描述的完全相同。当应用程序在后台时,它会显示通知。在前台时,它不会。

请注意,数据通知有效负载的行为有所不同,如documentation中所述。

答案 1 :(得分:0)

在前台,您可以使用本地通知

https://ionicframework.com/docs/native/local-notifications/

答案 2 :(得分:0)

这是Unity问题,但我认为FCM核心是相同的。

Showing FCM push notification in tray when app is in foreground

答案是

  

您必须手动将其重定向到本地通知