Android 在没有推送通知的情况下更新应用徽章计数 Android Oreo+

Android update app badge count without push notification Android Oreo+

我想在没有推送通知(例如静默推送)的情况下更新应用程序图标徽章计数。我只是想在阅读类似于 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()

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

所以在围绕徽章计数更新功能工作了很长时间之后,我得出的结论是 Android 不提供任何 api 来更新应用程序图标上的徽章计数而不通知。在 android 中,我们可以在内部发送通知,并借助于此更新徽章计数。

所以我们需要通知设备更新徽章计数,不通知我们不能更新它。如果我们向 Notification Builder 发送计数,那么如果我们想更新标记计数,我们只需要注意更新徽章计数以保持通知 ID 相同,否则它会将计数添加到之前的通知中。只需保持通知 ID 相同并创建一个单独的频道,静默推送以更新徽章计数。

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

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

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