如何向 UILocalNotification 警报添加操作按钮/操作?

Posted

技术标签:

【中文标题】如何向 UILocalNotification 警报添加操作按钮/操作?【英文标题】:How can I add action buttons/actions to UILocalNotification alert? 【发布时间】:2015-12-07 22:28:25 【问题描述】:

我在我的应用程序中安排了一个本地通知,现在当我向左滑动警报时,我得到一个通用的取消(交叉)按钮。

我很好奇是否可以像下图那样添加自定义按钮/操作?

【问题讨论】:

【参考方案1】:

我为你准备了一些代码片段,在 ViewDidLoad 方法显示后 10 秒显示一个按钮通知。

  import UIKit

    class TestViewController: UIViewController 

        let category = UIMutableUserNotificationCategory()

        override func viewDidLoad() 
            super.viewDidLoad()

            let restartAction = UIMutableUserNotificationAction()
            restartAction.identifier = "xx"
            restartAction.destructive = false
            restartAction.title = "Restart"
            restartAction.activationMode = .Background
            restartAction.authenticationRequired = false

            let categoryIdentifier = "category.identifier"
            category.identifier = categoryIdentifier
            category.setActions([restartAction], forContext: .Minimal)
            category.setActions([restartAction], forContext: .Default)

            let categories = Set(arrayLiteral: category)
            let settings = UIUserNotificationSettings(forTypes: [.Alert, .Sound], categories: categories)
            UIApplication.sharedApplication().registerUserNotificationSettings(settings)


            let localNotif = UILocalNotification()
            localNotif.alertBody = "testBody"
            localNotif.category = categoryIdentifier

            // Notification will be shown after 10 second (IMPORTANT: if you want to see notification you have to close or put app into background)
            localNotif.fireDate = NSDate().dateByAddingTimeInterval(10)
            UIApplication.sharedApplication().scheduleLocalNotification(localNotif)
        

    

注意:您必须在 AppDelegate 方法中处理操作:

func application(application: UIApplication, handleActionWithIdentifier identifier: String?,
                forLocalNotification notification: UILocalNotification, completionHandler: () -> Void) 

  completionHandler()

当然,我的代码并不像应有的那么干净,但你必须知道我写它只是为了演示目的。

这段代码是用 Swift 编写的,但转换为 Objective C 应该非常简单。

【讨论】:

以上是关于如何向 UILocalNotification 警报添加操作按钮/操作?的主要内容,如果未能解决你的问题,请参考以下文章

如何向 UILocalNotification 警报添加操作按钮/操作?

发送通知时是不是可以停止播放 UILocalNotification 的声音?

在 iOS 10 中向 UILocalNotification 添加操作

UILocalNotification 触发时自动将应用程序从后台带到前台?

iPhone静音时的UILocalNotification警报

如何在 Swift 中使用 UILocalNotification