单击后如何从屏幕中删除通知

时间:2018-04-15 16:38:54

标签: ios swift xcode swift4 ios11

几个月来,我一直在开发一个使用当地UNNotifications来实现宏伟目标的应用程序。我使用Swift 4编写了这个应用程序,因此它的目标是在iOS App Store上进行分发。在我测试我的应用程序时,我注意到在我点击其中一个通知操作(不是“取消”)之后,或者如果我只是点击了通知,应用程序将会打开(这是打算) ,但通知将保留在屏幕上。在以编程方式点击其中一个操作后,是否有任何可能的方法从屏幕上删除通知?以下是我安排通知的代码:

   let action1 = UNNotificationAction(identifier: "go", title: "Go", options: [.foreground])
        let action2 = UNNotificationAction(identifier: "cancel", title: "Cancel", options: [.destructive])

        let actionsCategory = UNNotificationCategory(identifier: "actions.category", actions: [action1, action2], intentIdentifiers: [], options: [])
        UNUserNotificationCenter.current().setNotificationCategories([actionsCategory])


        //Queue the notification alert
        let content = UNMutableNotificationContent()
        content.body = "Interesting day notification!"
        content.sound = UNNotificationSound.default()
        content.setValue(true, forKey: "shouldAlwaysAlertWhileAppIsForeground")
        content.categoryIdentifier = "actions.category"
       // if (pinNumber.text) != nil{
      //  }

        content.userInfo = ["Name": namePerson.text ?? "", "Pin": Int(pinNumber.text ?? "") != nil ? pinNumber.text! : ""]

        //trigger
        let triggerDate = Calendar.current.dateComponents([.year,.month,.day,.hour,.minute], from: datePicker.date)
        let trigger = UNCalendarNotificationTrigger(dateMatching: triggerDate, repeats: false)

        //scheduling
        let identifier = id // set same id as task
        let request = UNNotificationRequest(identifier: identifier, content: content, trigger: trigger)

        center.add(request, withCompletionHandler: {(error) in
            if let error = error{
                print(error)
            }else{
                print("saved alert")
            }
        })

1 个答案:

答案 0 :(得分:2)

我在代码中看不到会导致该行为的任何内容。这听起来像是一个iOS错误,或者对于你的应用程序的特定设备(或模拟器)的通知权限/设置有些奇怪。进入“设置”应用的通知部分,查看应用的设置。