Android:限制通知栏中的通知数量

Posted

技术标签:

【中文标题】Android:限制通知栏中的通知数量【英文标题】:Android: limit the number of notifications in notification bar 【发布时间】:2015-02-02 10:46:01 【问题描述】:

我创建了简单的 android 应用程序,它与推送通知集成。推送通知工作正常,但现在我想限制列表中显示的通知数量(最多 5 个)。当用户获得第 6 个时,想要删除最旧的。我浏览了网络,但我找不到实现这个东西的方法。

    是否可以实现这个场景?

这是我的 GCM Intent 服务,

@Override
protected void onHandleIntent(Intent intent) 
    Bundle extras = intent.getExtras();
    GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this);
    // The getMessageType() intent parameter must be the intent you received
    // in your BroadcastReceiver.
    String messageType = gcm.getMessageType(intent);
    // Log.e(getPackageName(), messageType);
    if (!extras.isEmpty()) 
        if (GoogleCloudMessaging.MESSAGE_TYPE_SEND_ERROR.equals(messageType)) 
            // sendNotification("Send error: " + extras.toString());
         else if (GoogleCloudMessaging.MESSAGE_TYPE_DELETED.equals(messageType)) 
            // sendNotification("Deleted messages on server: " +
            // extras.toString());
            // If it's a regular GCM message, do some work.
         else if (GoogleCloudMessaging.MESSAGE_TYPE_MESSAGE.equals(messageType)) 
            // Post notification of received message.
            // newms = extras.getString("message").toString();
            sendNotification(extras.getString("title"), extras.getString("id"));
            ;
        
    
    GcmBroadcastReceiver.completeWakefulIntent(intent);


private void sendNotification(String title, String id) 

    mNotificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
    Intent intent = new Intent(this, MainActivity.class);
    intent.putExtra("title", title);
    intent.putExtra("id", id);

    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

    Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this).setSmallIcon(R.drawable.pqr)
            .setContentTitle(getString(R.string.app_name)).setSound(uri).setStyle(new NotificationCompat.BigTextStyle().bigText(title))
            .setContentText(title);

    mBuilder.setDefaults(Notification.DEFAULT_ALL);
    mBuilder.setAutoCancel(true);
    mBuilder.setContentIntent(contentIntent);
    mNotificationManager.notify(Integer.parseInt(id), mBuilder.build());

【问题讨论】:

【参考方案1】:

是的,我们可以实现这一点。我保存了本地推送通知 ID,并在第 6 个到来时清除了第一个 id。(为此我们可以使用队列。)

【讨论】:

以上是关于Android:限制通知栏中的通知数量的主要内容,如果未能解决你的问题,请参考以下文章

Android 通知通道最大计数

Android 用户通知中的注册 ID 限制

在一个用户段中,FCM可以向其发送通知的设备是否有限制?

推送通知限制

Node.js GCM 推送通知允许的 ID 数量?

Android 应用程序图标中的通知计数徽章