Search code examples
swift3apple-push-notificationsios10unusernotificationcenterrich-notifications

Notification Content Extension is not appearing for multiple category name?


I have added Custom Remote Notification Content Extension to my project and added multiple Extension categories into the Notification Content Extension target info.plist file like the following:

enter image description here

added different types of notification action categories for different notifications into the AppDelegate:

 func addRichRotificationActions() {
        let confirmAction = UNNotificationAction(identifier: "ConfirmAction", title: "Confirm", options: [.foreground])
        let cancelAction = UNNotificationAction(identifier: "CancelAction", title: "Cancel", options: [.destructive])
        let closeAction = UNNotificationAction(identifier: "CloseAction", title: "Close", options: [.foreground])

        let openTicketCategory = UNNotificationCategory(identifier: "OpenTicket", actions: [confirmAction, cancelAction], intentIdentifiers: [], options: [])
        let confirmTicketCategory = UNNotificationCategory(identifier: "ConfirmTicket", actions: [closeAction, cancelAction], intentIdentifiers: [], options: [])
        let closeTicketCategory = UNNotificationCategory(identifier: "CloseTicket", actions: [], intentIdentifiers: [], options: [])
        let cancelTicketCategory = UNNotificationCategory(identifier: "CancelTicket", actions: [], intentIdentifiers: [], options: [])

        UNUserNotificationCenter.current().setNotificationCategories([openTicketCategory, confirmTicketCategory, closeTicketCategory, cancelTicketCategory])
    }

Now I am sending the apns json following way:

For Open tickets getting category name as "OpenTicket":

[AnyHashable("default"): You have a new ticket, AnyHashable("aps"): {
    alert = "#8556 - New Booking for Mr. Tomas";
    badge = 1;
    category = OpenTicket;
    "mutable-content" = 1;
    sound = default;
}]

For Confirm tickets getting category name as "ConfirmTicket":

[AnyHashable("default"): You have a confirmed ticket, AnyHashable("aps"): {
    alert = "#8556 - Ticket Confirmed for Mr. Tomas";
    badge = 1;
    category = ConfirmTicket;
    "mutable-content" = 1;
    sound = default;
}]

and so on.

But unfortunately, I am receiving the default notification with different action buttons rather than the custom notification content extension with different actions. I can't able to figure out the problem. How is it possible to get notification content extension with different actions for remote notification?


Solution

  • Just need to make the UNNotificationExtensionCategory as an Array rather than String in the info.plist of Notification Content Extension target.