ios10不显示通知自定义操作按钮

时间:2017-03-11 07:14:44

标签: ios swift push-notification swift3

我希望在我的应用收到通知时显示通知自定义操作按钮。但什么都没发生!有人可以帮帮我吗? THX。

这是我的AppDelegate.swift代码:

class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        // Register ourselves as a delegate so we can be notified when actions pressed.
        UNUserNotificationCenter.current().delegate = self

        // Request permission.
        UNUserNotificationCenter.current().requestAuthorization(options: [.alert]) {
            granted, error in
            if granted {
                print("Approval granted to send notifications")
            }
        }

        self.addCategory()

        return true
    }

    func addCategory() {
        // Add action.
        let stopAction = UNNotificationAction(identifier: "stop", title: "Stop", options: [])
        let snoozeAction = UNNotificationAction(identifier: "snooze", title: "Snooze", options: [])

        // Create category.
        let category = UNNotificationCategory(identifier: "reminder", actions: [stopAction, snoozeAction], intentIdentifiers: [], options: [])

        UNUserNotificationCenter.current().setNotificationCategories([category])
    }
}

UNUserNotificationCenterDelegate

extension AppDelegate: UNUserNotificationCenterDelegate {

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

    func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
        print("Called when a notification is delivered to a foreground app.")
        NotificationCenter.default.post(name: NSNotification.Name(rawValue: "notificationPresentAtForeground"), object: nil)
        completionHandler([.alert])
    }
}

1 个答案:

答案 0 :(得分:4)

我找到了答案。我没有设置我的通知内容类别标识符。 以下对我有用:

content.categoryIdentifier = "reminder"