当新邮件从Firebase实时数据库到达Android设备时,可以设置警报和通知

时间:2018-04-13 12:31:08

标签: java android firebase firebase-realtime-database

我正在使用firebase数据库来创建我的聊天应用程序。现在我已经成功完成了我的聊天应用程序,但是当新消息到达时,即使应用程序未运行,我也希望通知用户在通知栏中发出声音和通知。

我使用以下代码执行此操作

docker exec s10cmd /tmp/data.dat

但它只在我打开聊天活动时设置闹钟,然后在新消息到达时它不会发生任何事情。

这是我的聊天活动代码

 NotificationCompat.Builder builder =  new NotificationCompat.Builder(this)  
    .setSmallIcon(R.drawable.ic_launcher)  
    .setContentTitle("Notifications Example")  
    .setContentText("This is a test notification");  


  Intent notificationIntent = new Intent(this, MenuScreen.class);  

  PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent,   
    PendingIntent.FLAG_UPDATE_CURRENT);  

 builder.setContentIntent(contentIntent);  
 builder.setAutoCancel(true);
 builder.setLights(Color.BLUE, 500, 500);
 long[] pattern = {500,500,500,500,500,500,500,500,500};
 builder.setVibrate(pattern);
 builder.setStyle(new NotificationCompat.InboxStyle());
 builder.setSound(Settings.System.DEFAULT_NOTIFICATION_URI)
 NotificationManager manager = (NotificationManager) 
 getSystemService(Context.NOTIFICATION_SERVICE);  
 manager.notify(1, builder.build());  

以下是我的Firebase数据结构文件

Firebase Data Structure

感谢任何帮助。提前谢谢。

1 个答案:

答案 0 :(得分:0)

如果您使用的是FCM,则需要先了解该部分文档,然后再继续:

为大多数消息类型提供了onMessageReceived,下面列出了以下例外情况:

  1. 当您的应用在后台时发送的通知消息。在这种情况下,通知将传递到设备的系统托盘。用户点按通知会默认打开应用启动器
  2. 包含通知和数据有效负载的消息,包括后台和前台。在这种情况下,通知将传递到设备的系统托盘,并且数据有效负载将在启动器活动的附加内容中传递。
  3. 因此,如果您需要确定您发送到Android设备的有效负载类型。您可能希望使用包含通知和数据有效负载的消息,以便始终调用onMessageRecieved()。

    您可以找到更多详情Here