应用程序未运行时的本地通知

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 响应

已安排本地通知,但未在挂起和未运行模式下传递

当应用程序未运行时,通过静默推送通知在后台更新本地数据库

如果应用程序未运行(如时钟应用程序),我可以使用 iOS 本地通知吗?

Swift 3 - 本地通知的 didReceiveRemoteNotification 函数未触发