应用程序未运行时的本地通知
Posted
技术标签:
【中文标题】应用程序未运行时的本地通知【英文标题】:Local notification while app not running 【发布时间】:2015-01-01 17:02:04 【问题描述】:是否可以显示来自应用程序的某种本地通知,即使应用程序没有运行(也不是在后台)?
例如每日提醒或类似的东西。我知道推送通知可以实现,但它不适合我的应用。
【问题讨论】:
推送通知需要付款才能工作。我认为最好的选择是后台可运行线程 好吧,但是如果用户停止应用程序,后台线程也会被杀死,对吧? @EnriqueQuero 付款是什么意思? 【参考方案1】:您可以轻松安排本地通知,无论应用程序的状态如何,它们都会在预定的日期和时间显示。
首先,您需要获得用户的许可才能显示通知,如下所示:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: UIUserNotificationType.Sound|UIUserNotificationType.Alert | UIUserNotificationType.Badge, categories: nil))
return true
然后你像这样创建通知:
var localNotification:UILocalNotification = UILocalNotification()
localNotification.alertAction = "This is"
localNotification.alertBody = "A notification"
localNotification.fireDate = NSDate(timeIntervalSinceNow: 15)
UIApplication.sharedApplication().scheduleLocalNotification(localNotification)
看看Local and Remote Notification Programming Guide。
【讨论】:
这是一个很棒的答案并解决了我的问题。像魅力一样工作。 UILocalNotification 已被弃用。查看this Swift 3 example 以获取UNUserNotificationCenter 的本地通知。【参考方案2】:在 AppDelegate 中,改用这个函数
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
let settings = UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil)
application.registerUserNotificationSettings(settings)
return true;
【讨论】:
以上是关于应用程序未运行时的本地通知的主要内容,如果未能解决你的问题,请参考以下文章
应用程序未运行时未调用本地通知的 UNUserNotificationCenterDelegate didReceive 响应