取消单个UILocalNotification

时间:2016-07-20 09:54:01

标签: swift uilocalnotification

我的应用上有几个通知。我想要做的是,当本地通知到达时,它会删除另一个先前已经显示的通知中心。

我正在使用以下代码。

static func unscheduleNotification(userInfoValue: String){
    if let notifications = UIApplication.sharedApplication().scheduledLocalNotifications{
        for notification in notifications{
            if let userInfo = notification.userInfo as? [String:String]{
                if userInfo["info"] == userInfoValue{
                    UIApplication.sharedApplication().cancelLocalNotification(notification)                        
                }
            }
        }
    }
}

如果有人在这里指出了正确的方向,我将不胜感激。如果可能的话。

2 个答案:

答案 0 :(得分:0)

我找到了解决方案。或一个解决方案。在通知中添加一个重复间隔允许使用我正在使用的方法并在问题上发布以删除它。

我不知道这是不是正确的程序,但确实有效。

答案 1 :(得分:0)

如果您希望在获得另一个1时收到1个通知,那么最好在NSUserDefault中保留第一个通知对象,在收到另一个1通知时,从NSUserDefault获取已存储的通知然后将其删除

请考虑在收到第一个通知后重新启动设备的示例。然后它将在通知托盘中,但你不会得到取消它的对象。

重新启动设备后,scheduledLocalNotifications也不会提供对象。始终使用iOS 8时,scheduledLocalNotifications无效。

参考 - iOS 8 [UIApplication sharedApplication].scheduledLocalNotifications empty

存储在NSUserDefault中时,您必须将通知对象转换为NSData

let data = NSKeyedArchiver.archivedDataWithRootObject(notificationObject)

NSUserDefault获取时,它将是NSData

所以再次转换为对象

 let notificationObject : UILocalNotification = NSKeyedUnarchiver.unarchiveObjectWithData(data) as? UILocalNotification