我正在使用Firebase Cloud Messaging向我的应用程序发送通知。我有一个名为NoticeActivity的活动,应该在单击通知栏后将其打开。如果应用程序打开,它将很好地工作。 但是,如果应用程序已关闭,则单击通知栏后,启动器活动即会打开。 这是通知代码。
private static final String TAG = "PUSH NOTIFICATION:";
public int channal_id = 6;
//String CHANNEL_ID = "my_channel_01";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
if(remoteMessage.getData().size() > 0){
Log.d(TAG, " "+ remoteMessage.getData());
}
if (remoteMessage.getNotification() != null){
sendNotifcation(remoteMessage.getNotification().getBody());
}
}
private void sendNotifcation(String body) {
Intent intent = new Intent(getApplicationContext(), NoticeActivity.class);
intent.putExtra("Details", body);
//intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT );
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(getApplicationContext())
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle("BRAC SK LEARNING")
.setContentText(body)
.setAutoCancel(true)
.setContentIntent(pendingIntent);
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(CHANNEL_ID,
"Channel human readable title",
NotificationManager.IMPORTANCE_DEFAULT);
manager.createNotificationChannel(channel);
}
notificationBuilder.setChannelId(CHANNEL_ID);
manager.notify(001, notificationBuilder.build());
}
答案 0 :(得分:1)
当您的应用在后台运行时,Android会引导通知 消息发送到系统托盘。用户点击通知即可打开 默认情况下是应用启动器。
这包括同时包含通知和数据有效负载的消息 (以及从通知控制台发送的所有消息)。在这些 在这种情况下,通知将传递到设备的系统托盘,并且 数据有效载荷是根据您的意图提供的 启动器活动。
要深入了解将消息传递到您的应用,请参阅FCM报告 仪表板,记录在iOS上发送和打开的消息数 和Android设备,以及“展示”数据(通知 用户看到))。