IOS10本地通知使用UNUserNotification时如何设置徽章

Posted

技术标签:

【中文标题】IOS10本地通知使用UNUserNotification时如何设置徽章【英文标题】:How to set badge when using UNUserNotification for local notifications on IOS10 【发布时间】:2017-09-07 20:31:03 【问题描述】:

我正在使用 UNUserNotification 向用户推送重复的本地通知。我正在尝试在应用程序上设置徽章编号以指示错过的通知。 我搜索了这个论坛,发现 iPhone: Incrementing the application badge through a local notification

这表示不可能定期进行本地通知。那个帖子已经有几年了,他们正在使用 UILocal 通知。

对于 UNUserNotification 仍然如此吗?有没有办法设置徽章计数?

【问题讨论】:

【参考方案1】:

设置UNMutableNotificationContent 对象的badge 属性。

let notificationContent = UNMutableNotificationContent()
notificationContent.badge = 3

来自UNMutableNotificationContent documentation:

徽章

显示为应用图标标志的数字。

【讨论】:

感谢内森的回复。如您所述,我能够设置徽章编号。但是我正在使用重复的本地通知,即我的本地通知每 60 分钟触发一次,我看到相同的通知一次又一次地出现,带有相同的徽章编号。您对如何设置重复通知的徽章编号有什么建议吗? 您可能需要自己的逻辑来记录通知的数量。一个简单的解决方案是将计数器值保存到UserDefaults。当您发送新通知时增加此计数器,并在用户打开应用程序(或查看通知所需的任何内容)时将其重置为 0。 因为我正在使用像这样的重复通知 UNTimeIntervalNotificationTrigger(timeInterval: 3600, repeats: true)。我无法控制发出的每条通知,至少我不知道如何控制每条通知。 我认为目前不使用远程通知是不可能的。 可能有办法,但会有局限性。不要使用repeats: true,而是发送一些通知,每个通知都有一个适当的徽章编号(1、2、3,...)。当应用程序启动时,您可以取消所有未来的通知,并使用新的徽章编号重置通知。这种方法的局限性在于它会有一个上限(您为未来安排的通知数量),这意味着它将在某个点之后停止增加。

以上是关于IOS10本地通知使用UNUserNotification时如何设置徽章的主要内容,如果未能解决你的问题,请参考以下文章

IOS10本地通知使用UNUserNotification时如何设置徽章

iOS 10 本地通知未显示

在 iOS 10 中安排和处理本地通知

xcode 8 和 iOS 10 本地通知

本地通知在 iOS 10.3.1 中不起作用

针对特定日期重复本地通知 iOS 10