处理数据有效负载而无需用户点击通知?

时间:2016-09-29 09:23:37

标签: android android-notifications firebase-cloud-messaging firebase-notifications

  

在后台,应用会在通知托盘中收到通知有效负载,并且仅在用户点击通知时处理数据有效负载。

在没有用户点击通知的情况下,有没有办法处理数据有效负载?

2 个答案:

答案 0 :(得分:1)

基于Handling Messages上的FCM文档:

if (!empty($_POST['key'])){ 
  $delkey = $_POST['key'];
  foreach ($_SESSION['image'] as $k => $v) {
    if ($delkey == $v) {      
      $imgkey = array_search($v, $_SESSION['image']);
      if($imgkey) unset($_SESSION['image'][$imgkey]);
    }    
  }
}

仅通过点击通知不会专门处理。您可以在App state Notification Data Both Foreground onMessageReceived onMessageReceived onMessageReceived Background System tray onMessageReceived Notification: system tray Data: in extras of the intent. 中处理它。非常确定点按动作还取决于你如何实现它。

如果您打算做其他事情,请提供更多详细信息。

答案 1 :(得分:0)

如果您希望在应用未运行时接收数据有效负载,则需要使用带有 http协议(在您的情况下)的自定义应用服务器只有数据有效负载 无通知并将数据发送到fcm端点,如下所示

    { "data": { "some_key" : "some_value",
 "some_more_key" : "some_more_value" }, 
"registration_ids": ["device-token","device-token2"] } 

只是将数据从服务器发送到一个客户端

{
   "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
   "data" : {
     "Nick" : "Test",
     "body" : "Your message here",
     "Room" : "Some Test Room"
   },
 }

然后使用 POST ,您可以向设备发送下游消息,它将以您希望的方式运行。如果您想了解此类应用服务器的基本概念,请考虑以下事项:How to push notification to client when Firebase has a new entry?

我在这里发布了基本Java Servlet代码,并在firebase官方博客上发布了 node.js 代码。

希望它有所帮助。