【问题标题】:android system notification limit per app每个应用程序的android系统通知限制
【发布时间】:2015-10-27 09:38:47
【问题描述】:

这可能是题外话,但我找不到任何东西。

Android 应用可以显示的通知数量是否有限制?我在 100 条通知后遇到问题。没有文件清楚地说明这一点。

注意:显示 100 条通知并不是一个好主意,但出于某些原因,它是必需的。

【问题讨论】:

  • @SharpEdge 我不了解你,但我通常以编程方式发出通知。
  • 是的,我想到了,但是为了得到开发者社区的回复,我在这里问了。
  • @MikeM。 “通知数量限制”供应商可能会根据他们的 UI 外观感觉来实施限制,因为 OP 表示他没有找到任何有关它的文档。而且我知道通知是以编程方式发出的,但这与此无关,
  • @SharpEdge 我同意你在这一点上可能是正确的,但这个问题与编程并非完全无关。

标签: android android-notifications


【解决方案1】:

根据@Nirel 的回答。

1)我尝试在 3 种不同的设备上运行代码。

令人惊讶的是,超过 50 的通知没有显示在通知区域中。

它给出以下错误。

W/NotificationManager﹕ notify: id corrupted: sent 51, got back 0

后续调用也会出现同样的错误。

我看到了 NotificationManager 的来源,如果传入和传出 id 不同,它会给出这个错误。请参阅下面的代码。

https://github.com/android/platform_frameworks_base/blob/master/core/java/android/app/NotificationManager.java#L233

2) 在我尝试以 100 毫秒的间隔通知之后。

它也给出了同样的错误。我尝试的是在执行代码时删除 1 个通知。

令人惊讶的是,通知编号 153 出现在状态栏中。

所以结论是,最多可以有 50 个通知。这可能是默认行为,并且可以由制造商更改,如 @Sharp Edge 所述。

谢谢。

【讨论】:

  • 非常有用的信息
【解决方案2】:

在 API23 中

包 com.android.server.notification; NotificationManagerService.java

静态最终 int MAX_PACKAGE_NOTIFICATIONS = 50;

通知和 Toast 的限制是每个应用 50

【讨论】:

    【解决方案3】:

    这篇文章确实帮助我对这个主题进行研究。我已经写了一篇关于这个的文章,比如你如何修改你的逻辑并继续发布通知,即使你已经通过妥协最旧的通知达到了最大限制。 https://medium.com/mindorks/the-notification-limit-per-app-in-android-94af69a6862c

    【讨论】:

    • 这很有趣。虽然显示如此多的通知并不是一个好的用户体验,但最好对这个概念有一个想法。顺便说一句,我喜欢你关于 WorkManager 的文章。快乐分享。 :)
    【解决方案4】:

    运行这个:

    // prepare intent which is triggered if the
    // notification is selected
    
    Intent intent = new Intent(this, NotificationReceiver.class);
    // use System.currentTimeMillis() to have a unique ID for the pending intent
    PendingIntent pIntent = PendingIntent.getActivity(this, (int) System.currentTimeMillis(), intent, 0);
    
    // build notification
    // the addAction re-use the same intent to keep the example short
    Notification n  = new Notification.Builder(this)
            .setContentTitle("New mail from " + "test@gmail.com")
            .setContentText("Subject")
            .setSmallIcon(R.drawable.icon)
            .setContentIntent(pIntent);
    
    NotificationManager notificationManager = 
      (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    
    for(int i = 0;i<1000;i++)
    {
    Log.d("Tag", "notification number" + i "just published")
        notificationManager.notify(i, n); 
    }
    

    当应用程序崩溃时,你会看到你有多少通知..

    【讨论】:

    • 帮助很大。看我的回答。
    • 我也在我的应用程序中测试了这个问题,是的,有限制,但是很奇怪,因为whatsapp应用程序允许我发送无限的消息,他们是怎么做到的?
    • 即使我也很感兴趣 whatsapp 如何通过克服通知限制来允许无限消息...
    • 此 Whatsapp 是否有任何更新超过通知限制?
    【解决方案5】:

    在 Android 10 通知抽屉中,每个应用的通知限制从 50 条降至 24 条。

    阅读更多关于它的信息here

    【讨论】:

      猜你喜欢
      • 2014-07-23
      • 1970-01-01
      • 1970-01-01
      • 2011-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-09
      • 1970-01-01
      相关资源
      最近更新 更多