推送通知弹出 - Android

时间:2017-12-21 04:49:03

标签: android firebase push-notification firebase-cloud-messaging

                int mNotificationId = 001;
                Bitmap b = BitmapFactory.decodeResource(getResources(),R.drawable.net);

                NotificationCompat.Builder mBuilder =
                        new NotificationCompat.Builder(MainActivity.this)
                                .setSmallIcon(R.drawable.net)
                                .setLargeIcon(b)
                                .setContentTitle("My notification")
                                .setDefaults(NotificationCompat.DEFAULT_ALL)
                                .setPriority(NotificationCompat.PRIORITY_MAX)
                                .setContentText("Hello World! ");

                NotificationManager mNotifyMgr =
                        (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
                mNotifyMgr.notify(mNotificationId, mBuilder.build());

我在按钮点击上使用上面的代码在Android上生成推送通知,因为我正在设置优先级 - MAX,它会在应用程序屏幕上弹出,然后我将其滑出屏幕,然后在通知抽屉中显示。

我在onReceive上为我的FCM服务编写了相同的代码。但是,当我从FCM发出通知并且如果应用程序在后台时没有弹出,并且通知在通知栏中直接显示为图标。 而且,甚至没有显示指定的图标。 (R.drawable.net)

我需要将通知作为弹出窗口,并且还想知道如何将drawable设置为通知图标。

1 个答案:

答案 0 :(得分:0)

FCM中有两种类型的通知。

1. 通知消息 - 当应用处于后台时,FCM SDK会自动处理这些消息,并在应用处于前台时传递给您的接收方。

2. 数据消息 - 由客户端应用处理。这些仅由您的接收器处理。

根据您的问题,我认为您正在使用**。通知消息**是高优先级消息。通知消息应格式化为: -

{
 "message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"notification":{
  "title":"Portugal vs. Denmark",
  "body":"great match!"
}
}
}

您可以从服务器传递一些自定义参数来构建通知。 要在下面添加应用程序图标,就是清单条目。

<meta-data android:name="com.google.firebase.messaging.default_notification_icon"
    android:resource="@drawable/notification_icon" />


 <meta-data    android:name="com.google.firebase.messaging.default_notification_color"
    android:resource="@color/color_blue" />

使用this article on split testing发送消息。阅读Notification composerAbout FCM Messages

请注意,在使用通知消息时,当您的应用处于后台时,系统不会调用onReceive()