Firebase推送通知未点击即自动打开Activity问题求助
解决Firebase推送通知自动跳转问题
嘿,我一眼就瞅出问题所在了——你在代码里手动调用了pendingIntent.send()!这行代码会直接触发PendingIntent对应的跳转,完全跳过了“点击通知”这个关键步骤,难怪通知还没来得及展示就直接打开OrderDetailActivity了。
问题根源
在你的showNotifications方法末尾,这段代码就是罪魁祸首:
try { pendingIntent.send(); } catch (PendingIntent.CanceledException e) { e.printStackTrace(); }
PendingIntent.send()是主动触发跳转的方法,而我们需要的是让系统在用户点击通知时自动触发跳转,所以这行代码完全多余,删掉它就能解决问题。
修改后的完整代码
@Override public void onMessageReceived(RemoteMessage remoteMessage) { super.onMessageReceived(remoteMessage); final String title = remoteMessage.getData().get("title"); final String message = remoteMessage.getData().get("body"); showNotifications(title, message); } private void showNotifications(String title, String msg) { Intent i = new Intent(this, OrderDetailActivity.class); i.putExtra("order_id", 99); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_ONE_SHOT); Notification notification = new NotificationCompat.Builder(this) .setContentText(msg) .setContentTitle(title) .setContentIntent(pendingIntent) // 这里已经把PendingIntent绑定到通知上了 .setSmallIcon(R.mipmap.ic_launcher_logo) .build(); NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); manager.notify(NOTIFICATION_ID, notification); // 删掉下面这段主动触发的代码! // try { // pendingIntent.send(); // } catch (PendingIntent.CanceledException e) { // e.printStackTrace(); // } }
补充说明
setContentIntent(pendingIntent)已经完成了“点击通知触发跳转”的绑定,系统会在用户点击通知时自动处理PendingIntent,完全不需要手动调用send()。- 你的PendingIntent flag设置是合理的,
FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TASK确保打开OrderDetailActivity时会清空任务栈,符合大多数订单详情页的使用需求。 - 记得确认
NOTIFICATION_ID是一个全局唯一的常量,避免不同通知之间互相覆盖。
内容的提问来源于stack exchange,提问作者Alberto
相关产品推荐
相关产品推荐

