美文网首页
二. 本地推送通知的附加行为

二. 本地推送通知的附加行为

作者: 面糊 | 来源:发表于2016-05-29 14:47 被阅读33次

一. application: didReceiveLocalNotification: notification:

  1. 该方法的调用时间
    • 该方法是App接收到通知的时候调用的
    • 如果App在前台的时候接到通知, 会调用此方法执行一些操作, 但是不会有推送通知的提示
    • 如果App在后台的时候接到通知, 那么会在点击通知, App从后台转移到前台的时候调用这个方法
    • 但是, 如果App已经退出了, 那么接到本地通知, 点击通知从后台跳转到前台的时候, 就不会调用这个方法
  2. 该方法的使用注意点
    • 通过application的运行周期属性application.applicationState, 来执行一些操作
    • 当App处于前台的时候, 使用.Active来执行一些操作
    • 当App从前台跳转到后台的时候, 使用.Inactive来执行一些操作
    • 注意, 此方法当App完全退出之后, 不会调用

二. 在申请授权的时候执行额外操作

  1. 为通知创建操作组(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)
            }   
      
  2. 点击操作组会触发的方法

    • 当用户点击了本地通知的某个操作行为时会调用这个方法

    • 可以根据操作的标识, 判断用户点击了哪个按钮, 以做出不同的操作

    • 一定要调用系统提供的回调函数

        // 当用户点击了本地通知的某个行为时调用
        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()
        }

相关文章

  • 二. 本地推送通知的附加行为

    一. application: didReceiveLocalNotification: notification...

  • 推送

    一、推送 1.本地推送 (1)iOS8.0+ (2)设置附加行为选项 2.远程推送

  • 本地推送通知、远程推送通知、激光推送

    title : 本地推送通知、远程推送通知、激光推送category : UI 本地推送通知、远程推送通知、激光...

  • Notification的用法

    一、苹果中的通知 1、广播通知(NSNotificationCenter) 2、推送通知 二、本地推送通知 1、概...

  • 本地通知/推送

    ios 交流群:264706196 本地推送 本地通知是由本地应用触发的,它是基于时间行为的一种通知形式,例如闹钟...

  • 一些项目中可能只需要配置一次的东西吧

    本地推送&远程推送 1.远程推送 推送通知的分类远程推送通知本地推送通知 推送通知作用可以让不在前台运行的App告...

  • UILocalNotification 学习笔记

    简介: UILocalNotification(本地推送通知),是通知的一种,属于UIKit。它是一种基于时间行为...

  • 推送通知-本地推送

    iOS推送通知 注意:这里说的推送通知跟NSNotification有所区别 NSNotification是抽象的...

  • 推送通知(本地推送)

    一、简介 注意:这里说的推送通知跟NSNotification有所区别NSNotification是抽象的,不可见...

  • 推送通知

    推送通知的分类 本地推送通知本地推送通知可以理解为不联网,即使没有网络也可以推送通知通知发送方:开发人员负责在AP...

网友评论

      本文标题:二. 本地推送通知的附加行为

      本文链接:https://www.haomeiwen.com/subject/gldqdttx.html