我正在开发一款可在中午为您提供通知的应用。这个通知应该每天都不同。
我自己收到了通知:
let notificationOptions: UNAuthorizationOptions = [.alert, .sound];
UNUserNotificationCenter.current().requestAuthorization(options: notificationOptions) { (granted, error) in
if !granted {
print("Something went wrong")
} else {
let content = UNMutableNotificationContent()
content.body = getRandomDailyString()
content.sound = UNNotificationSound.default()
let date = DateComponents(hour: 12, minute: 15)
let trigger = UNCalendarNotificationTrigger(dateMatching: date, repeats: true)
let request = UNNotificationRequest(identifier: "Daily String", content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request) { (error) in
if let error = error {
print(error.localizedDescription)
}
}
}
}
现在发生的是调用 getRandomDailyString() -function,它返回一个字符串,并设置一个重复通知,该通知显示指定的时间,但始终具有相同的内容。
我如何制作每天提供独特内容的通知?
答案 0 :(得分:3)
现在无法测试,但试试并告诉我
如果它不在函数内部,我会把它放在一个函数中。然后从委托方法中调用它。不要忘记将其改为不可重复。
您必须有一个类来处理其委托方法,可以是您的AppDelegate或您创建的任何其他类。
委派UNUserNotificationCenterDelegate
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
x()
}
func x() {
let notificationOptions: UNAuthorizationOptions = [.alert, .sound];
UNUserNotificationCenter.current().requestAuthorization(options: notificationOptions) { (granted, error) in
if !granted {
print("Something went wrong")
} else {
let content = UNMutableNotificationContent()
content.body = getRandomDailyString()
content.sound = UNNotificationSound.default()
let date = DateComponents(hour: 12, minute: 15)
let trigger = UNCalendarNotificationTrigger(dateMatching: date, repeats: false)
let request = UNNotificationRequest(identifier: "Daily String", content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request) { (error) in
if let error = error {
print(error.localizedDescription)
}
}
}
}
}
这个答案也可以帮到你
Getting local notifications to show while app is in foreground Swift 3
答案 1 :(得分:1)
好的,这是解决方案。
不可能每天安排随机内容的重复通知。内容是在安排通知时定义的,以后不能更改。
您可以做的事最多可以预先安排64条通知。因此,您可以在接下来的64天内安排64条独特的通知,然后每当您打开应用程序时,检查剩余的通知数,并再次填写最多64条通知计划。
如果您在64天后仍未打开应用程序,则通过:P