如何在 iOS 中侦听通知关闭事件?
Posted
技术标签:
【中文标题】如何在 iOS 中侦听通知关闭事件?【英文标题】:How to listen for notification dismissed event in iOS? 【发布时间】:2015-05-10 16:02:59 【问题描述】:我正在监听为本地通知按下的操作,但有没有办法确定用户何时关闭通知?
这是我在 AppDelegate 中收听我的操作的方式,但关闭不会触发此操作:
func application(application: UIApplication, handleActionWithIdentifier identifier: String?, forLocalNotification notification: UILocalNotification, completionHandler: () -> Void)
var actionName: String? = nil
if let identifier = identifier
switch identifier
case "snoozeAction":
actionName = "snoozeActionTapped"
break
default: break
if let name = actionName
NSNotificationCenter.defaultCenter().postNotificationName(name, object: nil)
completionHandler()
【问题讨论】:
你搞清楚了吗?我也有类似的问题。 不,我没有,我放弃并通过破解轮询方法来解决它。我刚刚开始赏金,也许可以恢复它。 为什么要这样做? Apple 故意让这变得困难(不可能?),因为用户已明确表示他们不想与您的通知进行交互。 在他们没有互动时安排通知,然后在他们与应用互动时取消安排(取消) 答案是 ios 10 中的UNNotificationDismissActionIdentifier
【参考方案1】:
关闭通知不会唤醒您的应用程序,因此无法捕捉到这一点。
【讨论】:
嗯,在 iOS 14 之前都是这样(至少)。因为现在它正在执行app的第一个ViewController
的viewDidLoad
和`viewDidAppear`方法【参考方案2】:
你应该试试这个:
func application(application: UIApplication!,
handleActionWithIdentifier identifier:String!,
forLocalNotification notification:UILocalNotification!,
completionHandler: (() -> Void)!)
if (identifier == "FIRST_ACTION")
NSNotificationCenter.defaultCenter().postNotificationName("actionOnePressed", object: nil)
else if (identifier == "SECOND_ACTION")
NSNotificationCenter.defaultCenter().postNotificationName("actionTwoPressed", object: nil)
completionHandler()
【讨论】:
以上是关于如何在 iOS 中侦听通知关闭事件?的主要内容,如果未能解决你的问题,请参考以下文章