【发布时间】:2019-10-31 17:09:25
【问题描述】:
听说我对此本地通知有更多疑问
- 如何在没有 appdelegate 的情况下设置本地通知?
- 如何使用单独的控制器调用委托?
这是我的代码!!
import Foundation
import UserNotifications
class NotificationController {
private static var privateShared: NotificationController?
static var shared: NotificationController {
if privateShared == nil {
privateShared = NotificationController()
}
return privateShared!
}
class func destroy() {
privateShared = nil
}
private let notificationCenter = UNUserNotificationCenter.current()
func registerLocalNotification(controller: UIViewController){
notificationCenter.delegate = self
let options: UNAuthorizationOptions = [.alert, .sound, .badge]
notificationCenter.requestAuthorization(options: options) {
(didAllow, error) in
if !didAllow {
print("User has declined notifications")
}
}
}
}
通知类的扩展:
extension NotificationController: UNUserNotificationCenterDelegate {
func userNotificationCenter(_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
completionHandler([.alert, .sound])
}
func userNotificationCenter(_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void) {
if response.notification.request.identifier == "Local Notification" {
print("Handling notifications with the Local Notification Identifier")
}
completionHandler()
}
func scheduleNotification(notificationType: String) {
let content = UNMutableNotificationContent() // Содержимое уведомления
let categoryIdentifire = "Delete Notification Type"
content.title = notificationType
content.body = "This is example how to create " + notificationType
content.sound = UNNotificationSound.default
content.badge = 1
content.categoryIdentifier = categoryIdentifire
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)
let identifier = "Local Notification"
let request = UNNotificationRequest(identifier: identifier, content: content, trigger: trigger)
notificationCenter.add(request) { (error) in
if let error = error {
print("Error \(error.localizedDescription)")
}
}
let snoozeAction = UNNotificationAction(identifier: "Snooze", title: "Snooze", options: [])
let deleteAction = UNNotificationAction(identifier: "DeleteAction", title: "Delete", options: [.destructive])
let category = UNNotificationCategory(identifier: categoryIdentifire,
actions: [snoozeAction, deleteAction],
intentIdentifiers: [],
options: [])
notificationCenter.setNotificationCategories([category])
}
}
我无法在没有 appdelegate 的情况下配置本地通知
我身边有什么遗漏吗?
任何参考感谢!
谢谢。
【问题讨论】:
标签: swift apple-push-notifications uilocalnotification