几个月来,我一直在开发一个使用当地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")
}
})
答案 0 :(得分:2)
我在代码中看不到会导致该行为的任何内容。这听起来像是一个iOS错误,或者对于你的应用程序的特定设备(或模拟器)的通知权限/设置有些奇怪。进入“设置”应用的通知部分,查看应用的设置。