应用程序在前台时是否可以不触发本地通知?

Can a local notification not be triggered when app is in foreground?

我有一个基于日期触发的本地通知。触发此通知时,我会执行一些操作。

我现在的做法是这样的:

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
    switch response.actionIdentifier {
    case UNNotificationDismissActionIdentifier:
        print("Dismiss Action")
    case UNNotificationDefaultActionIdentifier:
        print("Default")
        // Do Action Here
    case "Snooze":
        print("Snooze")
    case "Delete":
        print("Delete")
    default:
        print("Unknown action")
    }

    completionHandler()
}

当我对屏幕上显示的通知采取操作时调用此方法。

我想要的是,如果我在应用程序内,则不应出现通知并自动执行我的任务。

这可能吗?

现在我的任务只有在按下收到的通知时才会执行。如果我在应用程序中,我认为这没有多大意义。

实现 userNotificationCenter:willPresent 委托方法 UNUserNotificationCenter 并传递空数组作为不显示通知的选项。

@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter,  willPresent notification: UNNotification, withCompletionHandler   completionHandler: @escaping (_ options:   UNNotificationPresentationOptions) -> Void) {

    // Use this to avoid notification to appear on screen
    completionHandler([])

    // Use this to dispaly notification
    completionHandler([UNNotificationPresentationOptions.alert, .sound, .badge])
}