繁体   English   中英

避免迅速覆盖本地通知

[英]avoid overriding local notifications in swift

我使用以下代码创建本地通知,问题是新通知会在最后一个通知上覆盖:

let content = UNMutableNotificationContent()
content.title = userInfo["title"] as! String
content.body = userInfo["message"] as! String
content.sound = UNNotificationSound.default()

let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)
let request = UNNotificationRequest(identifier: "TestIdentifier", content: content, trigger: trigger)

UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)

我该如何避免呢?

只需为每个通知设置不同的identifier: 它将每次自动创建新的本地通知。

请使用下面的示例代码随机生成通知标识符。

  extension NSObject {
    func randomNumber() -> Int {
            let randomNumber = Int(arc4random_uniform(UInt32(INT_MAX)))
            return randomNumber
        }
    }

现在,使用以下代码创建本地通知。

let content = UNMutableNotificationContent()
content.title = userInfo["title"] as! String
content.body = userInfo["message"] as! String
content.sound = UNNotificationSound.default()

//Random notification ID
let identifier = "HS\(String(self.randomNumber()))"

let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)
let request = UNNotificationRequest(identifier: identifier, content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)

在通知标识符中添加时间戳,例如遵循此代码。

让timestamp = NSDate()。timeIntervalSince1970

let content = UNMutableNotificationContent()
content.title = userInfo["title"] as! String
content.body = userInfo["message"] as! String
content.sound = UNNotificationSound.default()

let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)
let timestamp = NSDate().timeIntervalSince1970
let request = UNNotificationRequest(identifier: "TestIdentifier\(Int(timestamp))", content: content, trigger: trigger)

UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM