一. application: didReceiveLocalNotification: notification:
- 该方法的调用时间
- 该方法是App接收到通知的时候调用的
- 如果App在前台的时候接到通知, 会调用此方法执行一些操作, 但是不会有推送通知的提示
- 如果App在后台的时候接到通知, 那么会在点击通知, App从后台转移到前台的时候调用这个方法
- 但是, 如果App已经退出了, 那么接到本地通知, 点击通知从后台跳转到前台的时候, 就不会调用这个方法
- 该方法的使用注意点
- 通过application的运行周期属性
application.applicationState
, 来执行一些操作 - 当App处于前台的时候, 使用
.Active
来执行一些操作 - 当App从前台跳转到后台的时候, 使用
.Inactive
来执行一些操作 - 注意, 此方法当App完全退出之后, 不会调用
- 通过application的运行周期属性
二. 在申请授权的时候执行额外操作
-
为通知创建操作组(categories)
-
在iOS8.0之后, 如果要使用本地通知, 就必须先注册这个本地通知, 然后才能使用
-
在注册时, 可以为通知设置很多详细的属性, 其中一个就是通知的操作行为
-
操作行为, 会在你的App处于后台时, 当他接到通知, 你的通知会多出两个额外的按钮, 这两个按钮就是操作组的action
-
操作行为可以详细设置为前台触发, 后台触发
-
操作行为必须有一个组标识, 这样在你发送这个通知的时候, 才能发送出有标识的这个通知
// 申请通知授权 func localNotificationAuthority() { if #available(iOS 8.0, *) { // 创建通知类型 let typeValue = UIUserNotificationType.Alert.rawValue | UIUserNotificationType.Badge.rawValue | UIUserNotificationType.Sound.rawValue let type = UIUserNotificationType(rawValue: typeValue) // 创建一个操作组 let category : UIMutableUserNotificationCategory = UIMutableUserNotificationCategory() // 设置组标识 category.identifier = "select" // 添加组行为 let action1 = UIMutableUserNotificationAction() action1.identifier = "action1" action1.title = "action1" // 操作行为的环境条件 // Foreground: 当用户点击了这个行为, 必须进入到前台才能执行 // Background: 当用户点击了这个行为, 在后台也可以执行 action1.activationMode = .Foreground action1.destructive = false // 通过颜色来标识这个行为 // 创建第二个组行为 let action2 = UIMutableUserNotificationAction() action2.identifier = "action2" action2.title = "action2" action2.activationMode = .Background action2.authenticationRequired = true // 是否在解锁屏幕之后才能执行, 如果activation为前台, 此属性会被忽略 action2.destructive = true // 在iOS9.0之后, 通知是可以绑定一些操作行为的 if #available(iOS 9.0, *) { action2.behavior = .TextInput action2.parameters = [UIUserNotificationTextInputActionButtonTitleKey: "回复"] } // 创建操作数组 let actions : [UIUserNotificationAction] = [action1, action2] // 设置操作组 // 参数1: 操作行为数组 // 参数2: 通知行为的上下文, 作用在弹窗的样式 // Default: 最多可以有四个行为; Minimal: 如果空间不够, 最多只有两个行为 category.setActions(actions, forContext: UIUserNotificationActionContext.Default) // 创建操作选项组 let categories : Set<UIUserNotificationCategory> = [category] let setting = UIUserNotificationSettings(forTypes: type, categories: categories) UIApplication.sharedApplication().registerUserNotificationSettings(setting) }
-
-
点击操作组会触发的方法
-
当用户点击了本地通知的某个操作行为时会调用这个方法
-
可以根据操作的标识, 判断用户点击了哪个按钮, 以做出不同的操作
-
一定要调用系统提供的回调函数
// 当用户点击了本地通知的某个行为时调用 func application(application: UIApplication, handleActionWithIdentifier identifier: String?, forLocalNotification notification: UILocalNotification, completionHandler: () -> Void) { if identifier == "action1" { print("点击了action1") } else if identifier == "action2" { print("点击了action2") } // 注意要调用系统回调的block completionHandler() }
-
网友评论