不同日期的本地通知 Swift 3
Posted
技术标签:
【中文标题】不同日期的本地通知 Swift 3【英文标题】:Local Notification on different dates Swift 3 【发布时间】:2017-06-14 00:27:23 【问题描述】:我想在每年的特定日期触发本地通知,但所有通知都有不同的标题和正文,这是我编写的代码,效果很好,但仅适用于一个通知,第二部分是在收到通知后我的应用图标有 1,表示那里有一个通知如何删除它?..
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
// Override point for customization after application launch.
UIApplication.shared.statusBarStyle = .default
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) (allowed, error) in
UNUserNotificationCenter.current().delegate = self
scheduleNotification()
return true
func scheduleNotification()
var date = DateComponents()
date.year = 2017
date.month = 6
date.day = 12
date.hour = 22
date.minute = 39
let trigger = UNCalendarNotificationTrigger(dateMatching: date, repeats: false)
let content = UNMutableNotificationContent()
content.title = "Schedule Notification"
content.body = "Today is my Birthday"
content.sound = UNNotificationSound.default()
content.badge = 1
let request = UNNotificationRequest(identifier: "textNotification", content: content, trigger: trigger)
UNUserNotificationCenter.current().removeAllPendingNotificationRequests()
UNUserNotificationCenter.current().add(request) (error) in
if let error = error
print("error: \(error)")
提前感谢和感谢
【问题讨论】:
您需要安排多个通知;每个所需日期一个。如果您不想标记应用图标,请不要设置badge
属性
感谢@Paulw11,让您快速回复..
【参考方案1】:
对于重复通知,您必须安排多个通知。你可以这样做。
func scheduleNotification(_ title:String, body:String, dateComponents :DateComponents)
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: false)
let content = UNMutableNotificationContent()
content.title = title
content.body = body
content.sound = UNNotificationSound.default()
content.badge = 1
let request = UNNotificationRequest(identifier: "textNotification", content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request) (error) in
if let error = error
print("error: \(error)")
并使用上述功能来安排多个这样的通知。
var date = DateComponents()
date.year = 2017
date.month = 6
date.day = 12
date.hour = 22
date.minute = 39
UNUserNotificationCenter.current().removeAllPendingNotificationRequests()
scheduleNotification("Schedule Notification", body: "Today is my Birthday", dateComponents: date)
scheduleNotification("Schedule Notification 2", body: "Today is my Birthday 2", dateComponents: date2)
scheduleNotification("Schedule Notification 3", body: "Today is my Birthday 3", dateComponents: date3)
第二部分您的问题如何删除徽章图标。在 applicationDidFinishLaunching 或 applicationDidBecomeActive 的某处添加以下代码。
UIApplication.shared.applicationIconBadgeNumber = 0;
【讨论】:
它不起作用,我创建了一个名为 notificationLauncher() 的新函数,在这个函数中我创建了三个不同的日期组件,然后我调用了带有标题、正文和组件参数的 scheduleNotification 函数,然后我调用了这个函数在应用程序委托 applicationDidFinisgLaunchingWithOptions :( 即使我尝试使用多个函数来调用多个通知,只有单个通知不起作用,但我什至没有收到一个通知:( 你收到的是第一个通知还是第三个?? 我在尝试多个通知时没有收到任何通知,但是当我尝试单个通知时我能够收到它... 上面的代码不起作用,这只适用于最后一个计划日期(小时,分钟)【参考方案2】:为每个通知设置不同的标识符会给您所需的结果。
notificationType - 是您在安排通知时可以传递的任何字符串
let request = UNNotificationRequest(identifier: "Medicine Local Notification\(notificationType)", content: content, trigger: trigger)
【讨论】:
以上是关于不同日期的本地通知 Swift 3的主要内容,如果未能解决你的问题,请参考以下文章