如何向 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 触发时自动将应用程序从后台带到前台?