在特定时间触发本地通知
fired local notification at specific time
请问我如何在特定时间触发本地通知?没有用户触发它并且需要应用程序在特定时间触发本地通知
以下我的代码:
这是为了获得用户的许可
func registerLocal() {
let center = UNUserNotificationCenter.current()
center.requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in
if granted {
print("Yay!")
} else {
print("D'oh")
}
}
}
// 我安排本地通知
func scheduleLocal() {
let center = UNUserNotificationCenter.current()
let content = UNMutableNotificationContent()
content.title = "Late wake up call"
content.body = "The early bird catches the worm, but the second mouse gets the cheese."
content.categoryIdentifier = "alarm"
content.userInfo = ["customData": "fizzbuzz"]
content.sound = UNNotificationSound.default()
var dateComponents = DateComponents()
dateComponents.hour = 3
dateComponents.minute = 19
dateComponents.day = 3
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true)
let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger)
center.add(request)
center.removeAllPendingNotificationRequests()
}
// 她我调用这些方法
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
registerLocal()
scheduleLocal()
return true
}
当我关闭我的应用程序时,我没有收到通知,请帮助我如何在特定时间触发本地通知
感谢
您不应在添加通知后调用 center.removeAllPendingNotificationRequests()
,因为它也会取消之前添加的待处理通知。您应该在致电 center.addRequest(request)
后检查您的请求是否已被
实际添加
center.getPendingNotificationRequests(completionHandler: { pendingRequest in
print("Pending notifications: \(pendingRequest)") //Just for debugging
})
或者您也可以为 addRequest
指定完成处理程序,如果未成功添加请求,这将 return 出错:
center.add(request, withCompletionHandler: { error in
print(error)
})
请问我如何在特定时间触发本地通知?没有用户触发它并且需要应用程序在特定时间触发本地通知
以下我的代码:
这是为了获得用户的许可
func registerLocal() {
let center = UNUserNotificationCenter.current()
center.requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in
if granted {
print("Yay!")
} else {
print("D'oh")
}
}
}
// 我安排本地通知 func scheduleLocal() {
let center = UNUserNotificationCenter.current()
let content = UNMutableNotificationContent()
content.title = "Late wake up call"
content.body = "The early bird catches the worm, but the second mouse gets the cheese."
content.categoryIdentifier = "alarm"
content.userInfo = ["customData": "fizzbuzz"]
content.sound = UNNotificationSound.default()
var dateComponents = DateComponents()
dateComponents.hour = 3
dateComponents.minute = 19
dateComponents.day = 3
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true)
let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger)
center.add(request)
center.removeAllPendingNotificationRequests()
}
// 她我调用这些方法
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
registerLocal()
scheduleLocal()
return true
}
当我关闭我的应用程序时,我没有收到通知,请帮助我如何在特定时间触发本地通知
感谢
您不应在添加通知后调用 center.removeAllPendingNotificationRequests()
,因为它也会取消之前添加的待处理通知。您应该在致电 center.addRequest(request)
后检查您的请求是否已被
center.getPendingNotificationRequests(completionHandler: { pendingRequest in
print("Pending notifications: \(pendingRequest)") //Just for debugging
})
或者您也可以为 addRequest
指定完成处理程序,如果未成功添加请求,这将 return 出错:
center.add(request, withCompletionHandler: { error in
print(error)
})