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

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

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

【问题讨论】:

    标签: ios objective-c uilocalnotification


    【解决方案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 应该非常简单。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-23
      • 2018-02-18
      • 1970-01-01
      • 1970-01-01
      • 2015-01-30
      • 1970-01-01
      相关资源
      最近更新 更多