我在Firebase中制作了一个聊天应用程序,当以下代码收到新消息时,用户会收到通知。
private void sendNotification(String title, String message, String receiver, String receiverUid, String firebaseToken) {
Intent intent = new Intent(this, ChatActivity.class);
intent.putExtra("name",title);
intent.putExtra(Const.ARG_RECEIVER, receiver);
intent.putExtra(Const.ARG_RECEIVER_UID, receiverUid);
intent.putExtra(Const.ARG_FIREBASE_TOKEN, firebaseToken);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
char[] ch = firebaseToken.substring(0,3).toCharArray();
String a = "";
for (char aCh : ch) {
a = a + Integer.toHexString(aCh);
}
PendingIntent pendingIntent = PendingIntent.getActivity(this, Integer.parseInt(a), intent,
PendingIntent.FLAG_ONE_SHOT);
// Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_noti)
.setContentTitle(title)
.setContentText(message)
.setAutoCancel(true)
// .setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(Integer.parseInt(a), notificationBuilder.build());
}
我希望在不同的用户发送消息时收到不同的通知,但对于同一用户,通知应该更新。我尝试通过获取用户的Firebase令牌的前3个字母的Unicode来设置唯一ID,但它也只显示一个通知。如果我与 2 个人聊天,则与我开始聊天的用户首先显示通知,但不显示第二个通知。请看一看并提供帮助。谢谢
只需将FLAG_ONE_SHOT
更改为FLAG_UPDATE_CURRENT
即可。
FLAG_ONE_SHOT :指示此挂起意图只能使用一次的标志。
FLAG_UPDATE_CURRENT :该标志指示如果所描述的待处理意图已存在,则保留它,但将其额外数据替换为此新意图中的内容。