如何显示多个本地通知

Posted

技术标签:

【中文标题】如何显示多个本地通知【英文标题】:How to show multiple local notifications 【发布时间】:2017-09-12 01:38:41 【问题描述】:

背景:

我正在编写一个机器人向您发送消息的应用程序。这些消息可以作为本地通知接收。

问题:

当机器人在短时间内(每条消息间隔 1 秒)发送多条通知时,通知中心将只显示一条消息。我每次都会听到通知声音,但我仍然只会看到第一条消息。

相关代码:

func postUserNotification(content: String, delay: TimeInterval, withDictionary dictionary: [String:String] = [:]) 

    let notificationContent = UNMutableNotificationContent()
    notificationContent.body = content
    notificationContent.userInfo = dictionary
    notificationContent.categoryIdentifier = "message"

    let dateAfterDelay = Date(timeIntervalSinceNow: delay)

    let dateComponents = Calendar.current.dateComponents([.year,.month,.day,.hour,.minute,.second], from: dateAfterDelay)


    let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: false)

    let identifier = "identifier" + "\(NotificationManager.incrementor)"

    let localNotification = UNNotificationRequest(identifier: identifier, content: notificationContent, trigger: trigger)

    UNUserNotificationCenter.current().add(localNotification) (error : Error?) in
        if let theError = error 
            print("the error is \(theError.localizedDescription)")
        
    

【问题讨论】:

正如 Arnav 所说,这是预期的功能,所以现在的问题是,什么是好的解决方法? 问题是我试图从应用程序发送通知,即使应用程序已变为非活动状态。通过意识到这一点并在应用程序实际失去活动状态之前排队所有即将到来的通知来解决此问题 【参考方案1】:

您的代码没有问题:

就像您在问题中所写,Apple Docs 中提到了这一点:

If you are sending multiple notifications to the same device or 
computer within a short period of time, the push service will send only 
the last one.

https://developer.apple.com/library/content/technotes/tn2265/_index.html#//apple_ref/doc/uid/DTS40010376-CH1-TNTAG23

【讨论】:

感谢您的回复和链接,也许您可​​以指出一个解决方法? 我想知道 iMessage、WhatsApp 和许多其他应用程序等应用程序如何工作而不会遇到此问题。还是他们以至少 2-3 秒的间隔将这些东西排队?

以上是关于如何显示多个本地通知的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的 AppDelegate 上设置多个本地通知?

Swift:多个本地通知,但只显示最新的

本地通知默认不显示在通知中心

如何在 ionic 4 中使用电容器进行本地通知,在通知中显示图标和图像“不是科尔多瓦本地通知”

Iphone 多个本地通知

当应用程序处于前台时如何显示本地通知