两种不同类型的本地通知

时间:2017-07-13 12:36:56

标签: ios swift xcode swift3 notifications

我创建了两个不同的函数,每个函数都创建一个新的本地通知。

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

    // Configure Notification Content
    notificationContent.title = "Notif 1"
    notificationContent.subtitle = "Local Notifications"
    notificationContent.body = "hellow worlds."

    // 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: "cocoacasts_local_notification", 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))")
        }
    }
}
func scheduleLocalNotification2() {
    // Create Notification Content
    let notificationContent = UNMutableNotificationContent()

    // Configure Notification Content
    notificationContent.title = "Notif 2"
    notificationContent.subtitle = "Local Notifications"
    notificationContent.body = "hellow world + snooze"

    // 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: "cocoacasts_local_notification", 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))")
        }
    }
}

我希望第一个函数在没有任何操作的情况下创建正常通知,第二个函数创建带操作按钮的通知。所以我创建了以下函数

func configureUserNotificationsCenter() {
    // Configure User Notification Center
    UNUserNotificationCenter.current().delegate = self

    // 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])
}

然后我在viewdidload中调用configureUserNotificationsCenter,但这会导致我的所有通知都有这些操作按钮。我只想使用scheduleLocalNotifications2函数安排的通知,而其他函数的通知不应该有这些操作按钮。我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

这两种方法都使用notificationContent.categoryIdentifier Notification.Category.tutorial。这与您指定按钮的类别相同,这就是它为两者显示的原因。您需要为没有按钮的通知创建第二个类别标识符