帮我解决一周内遇到问题的朋友 我制作了一个Android应用程序,其中我有3个名为
的活动MainActivity
NotificationListActivity
NotificationActivity
除此之外,我的应用程序中有2个服务(因为我正在使用FCM)
JLZFirebaseMsgService
JLZInstanceIdService
在JLZFirebaseMsgService.java中我编写了代码
private void sendNotification(String messageBody) {
Intent intent = new Intent(this,NotificationActivity.class);
// intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent,
PendingIntent.FLAG_ONE_SHOT);
Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle("Jee Lo Zindagi 2.0")
.setContentText(messageBody)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, notificationBuilder.build());
}
我想要的是每当FCM服务器向设备发送通知时应用程序应该像我写的那样打开NotificationActivity
但每当我点击通知时,它都会打开MainActivity,我不知道为什么。
当应用程序处于打开状态时,通知会通过点击它来转到NotificationActivity,这是我想要的,但不是应用程序关闭时的相同情况。
但有时会发现应用通过点击通知显示正确的活动我仍然不知道为什么。
答案 0 :(得分:0)
您应该在服务器代码上使用“通知”的“数据” 在服务器代码上使用“通知”时 当您的应用程序未运行时,JLZFirebaseMsgService.java无法启动。相反,您将使用您的启动器图标接收通知 但是,如果您在服务器代码上使用“数据”,则将启动消息传递服务
答案 1 :(得分:0)
您似乎正在发送通知消息,这些是当您的应用位于您的案例中的前台时会转到onMessageReceived上的消息,这会导致您手动生成通知,当您的应用处于后台时会产生通知在自动生成的通知中,您的代码未定义。
如果您正在使用FCM REST API,则可以使用click_action字段,该字段允许您定义用户点击通知时将启动的活动。如果您使用的是Firebase控制台,则目前无法从那里指定click_action。