【问题标题】:Android update app badge count without push notification Android Oreo+Android 更新应用程序徽章计数,无需推送通知 Android Oreo
【发布时间】:2021-11-17 14:14:19
【问题描述】:

我想在没有推送通知的情况下更新应用图标徽章计数(例如静默推送)。我只是想在阅读类似于linkedIn的应用程序内的任何通知后更新应用程序徽章计数,在阅读任何通知时它会更新应用程序徽章的计数。目前,我已经实现了解决方案,我从 FCM 获取带有徽章计数的有效负载,并使用配置了静默推送通知通道的 android 通知生成器对其进行更新。

var notificationBuilder = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID)
    .setContentTitle("New Messages")
    .setContentText("You've received 3 new messages.")
    .setSmallIcon(R.drawable.ic_notify_status)
    .setNumber(messageCount)
    .build()

但这对我不起作用,因为我还需要在阅读应用程序内的任何通知后更新计数。如果我从通知托盘中清除通知,那么计数也会从应用程序徽章中消失,有没有什么方法可以在应用程序内不推送通知的情况下设置该计数?提前致谢。

【问题讨论】:

  • “我还需要在阅读应用程序内的任何通知后更新计数”——使用与您在问题中显示的代码类似的代码,使用新号码更新Notification。该代码与 FCM 无关,可以在任何需要的地方使用。
  • 我试过了,正在尝试使用上面的代码设置不推送的计数,但为此我需要在通知托盘中显示静默推送

标签: android push-notification android-8.0-oreo badge android-launcher


【解决方案1】:

因此,在解决徽章计数更新功能这么久之后,我得出的结论是,Android 不提供任何 API 来更新应用图标上的徽章计数而不通知。在 android 中,我们可以在内部发送通知,并在此帮助下更新徽章计数。

所以我们需要通知设备更新徽章计数,而不是通知我们不能更新它。如果我们将计数发送到通知生成器,那么如果我们想更新徽章计数,我们只需要注意更新徽章计数以保持通知 id 每次都相同,否则它会将计数添加到之前的通知中。只需保持通知 ID 相同,并创建一个单独的频道,通过静默推送来更新徽章计数。

public static int NOTIFICATION_ID = 1001; 
NotificationManager notificationManager =
            (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

    notificationManager.notify(NOTIFICATION_ID, notificationBuilder.build());

该解决方案将覆盖以前的计数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    • 2012-12-24
    • 2014-07-18
    • 2013-08-07
    相关资源
    最近更新 更多