使用swift后台获取本地通知

Posted

技术标签:

【中文标题】使用swift后台获取本地通知【英文标题】:Background fetch local notification using swift 【发布时间】:2016-07-27 13:07:28 【问题描述】:

在我的应用程序中,我想在应用程序处于后台或被终止时读取本地通知,并且我想取消该通知,因为它是重复的。

我正在使用下面的代码来安排本地通知,

let localNotification = UILocalNotification()
localNotification.fireDate = NSDate()
localNotification.repeatInterval = NSCalendarUnit.Day
localNotification.timeZone = NSTimeZone.localTimeZone()
localNotification.alertBody = "Hello"
localNotification.userInfo = userInfo
UIApplication.sharedApplication().scheduleLocalNotification(localNotification)

两天后,我想取消该通知。所以,我想获取数据并检查它以取消它。不可能使用content-available=1 进行本地通知,而且我不希望用户与通知进行交互。

func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) 

是否有可能在后台获取本地通知?

【问题讨论】:

这个问题与本地通知无关(因为它们可以使用 cancelLocalNotification 取消),而是在后台运行。过去有很多关于后台运行的问题你可以看看。简短的回答,不,这是不可能的,除非您的应用能够出于其他正当理由在后台运行 【参考方案1】:

即使您的设备重新启动本地通知将在通知托盘中,它不会删除。当用户点击通知并且didReceiveLocalNotification 将接到电话时,只有它才能被控制以删除或执行进一步的任务。

只有通过推送工具包通知才能做到这一点,它会远程调用。

当它出现时,它将在后台调用您的应用 30 秒,然后您将获得控制权以访问它以删除或执行任何其他操作。

确保如果设备重新启动,您必须将其保留在 NSUserDefault 中,除非您无法访问该对象。

【讨论】:

以上是关于使用swift后台获取本地通知的主要内容,如果未能解决你的问题,请参考以下文章

每 X 天本地通知 - Swift

应用程序在后台运行时发送本地通知 Swift 2.0

iOS 后台获取本地通知

后台运行的应用程序发送本地通知

在应用程序处于后台时获取本地通知

iOS 本地通知 - 在后台时回调