UserNotifications 扩展服务 UNNotificationAction didReceive 操作委托未被调用。

UserNotifications Extension Service UNNotificationAction didReceive action delegate not getting called.

我正在使用 UNNotificationAction 为本地通知创建通知服务扩展,但点击它时委托未被调用。

userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) 

这是我的 3 个动作

// Define Actions
        let actionReadLater = UNNotificationAction(identifier: Notification.Action.readLater, title: "Read Later", options: [])
        let actionShowDetails = UNNotificationAction(identifier: Notification.Action.showDetails, title: "Show Details", options: [.foreground])
        let actionUnsubscribe = UNNotificationAction(identifier: Notification.Action.unsubscribe, title: "Unsubscribe", options: [.destructive, .authenticationRequired])

        // Define Category
        let tutorialCategory = UNNotificationCategory(identifier: Notification.Category.tutorial, actions: [actionReadLater, actionShowDetails, actionUnsubscribe], intentIdentifiers: [], options: [])

        // Register Category
        UNUserNotificationCenter.current().setNotificationCategories([tutorialCategory])

安排我正在使用的通知

private func scheduleLocalNotification() {
        // Create Notification Content
        let notificationContent = UNMutableNotificationContent()

        // Configure Notification Content
        notificationContent.title = "Cocoacasts"
        notificationContent.subtitle = "Local Notifications"
        notificationContent.body = "In this tutorial, you learn how to schedule local notifications with the User Notifications framework."
        notificationContent.userInfo = ["customNumber": 100]
        // Set Category Identifier
        notificationContent.categoryIdentifier = Notification.Category.tutorial

        // Add Trigger
        let notificationTrigger = UNTimeIntervalNotificationTrigger(timeInterval: 10.0, repeats: false)

        // Create Notification Request
        let notificationRequest = UNNotificationRequest(identifier: "exampleNotification", content: notificationContent, trigger: notificationTrigger)

        // Add Request to User Notification Center
        UNUserNotificationCenter.current().add(notificationRequest) { (error) in
            if let error = error {
                print("Unable to Add Notification Request (\(error), \(error.localizedDescription))")
            }
        }
    }

我的扩展程序正在显示,但没有触发操作,没有扩展程序操作正常。

尝试这样的事情:

    class NotificationViewController: UIViewController, UNNotificationContentExtension {

    @IBOutlet var label: UILabel?


    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any required interface initialization here.

        preferredContentSize = CGSize.init(width: self.view.bounds.width / 2, height: self.view.bounds.height / 5)
    }

    func didReceive(_ notification: UNNotification) {
        self.label?.text = "Extension"
    }


    // Implement this method
    func didReceive(_ response: UNNotificationResponse, completionHandler completion: @escaping (UNNotificationContentExtensionResponseOption) -> Void) {

        if response.notification.request.content.categoryIdentifier == "yourCategory" {

            switch response.actionIdentifier {

            case "first":
                // Do something
                completion(.dismissAndForwardAction)

            case "second":

                // Do something
                completion(.dismissAndForwardAction)

            default:
                break;
            }
        }
    }
}

您应该实施 UNNotificationContentExtension 的方法:

func didReceive(_ response: UNNotificationResponse, completionHandler completion: @escaping (UNNotificationContentExtensionResponseOption) -> Void) {}

在这个区块中,您可以检查您的操作。希望对你有帮助。