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

一. application: didReceiveLocalNotification: notification:

  1. 該方法的調用時間
    • 該方法是App接收到通知的時候調用的
    • 如果App在前臺的時候接到通知, 會調用此方法執(zhí)行一些操作, 但是不會有推送通知的提示
    • 如果App在后臺的時候接到通知, 那么會在點擊通知, App從后臺轉移到前臺的時候調用這個方法
    • 但是, 如果App已經(jīng)退出了, 那么接到本地通知, 點擊通知從后臺跳轉到前臺的時候, 就不會調用這個方法
  2. 該方法的使用注意點
    • 通過application的運行周期屬性application.applicationState, 來執(zhí)行一些操作
    • 當App處于前臺的時候, 使用.Active來執(zhí)行一些操作
    • 當App從前臺跳轉到后臺的時候, 使用.Inactive來執(zhí)行一些操作
    • 注意, 此方法當App完全退出之后, 不會調用

二. 在申請授權的時候執(zhí)行額外操作

  1. 為通知創(chuàng)建操作組(categories)

    • 在iOS8.0之后, 如果要使用本地通知, 就必須先注冊這個本地通知, 然后才能使用

    • 在注冊時, 可以為通知設置很多詳細的屬性, 其中一個就是通知的操作行為

    • 操作行為, 會在你的App處于后臺時, 當他接到通知, 你的通知會多出兩個額外的按鈕, 這兩個按鈕就是操作組的action

    • 操作行為可以詳細設置為前臺觸發(fā), 后臺觸發(fā)

    • 操作行為必須有一個組標識, 這樣在你發(fā)送這個通知的時候, 才能發(fā)送出有標識的這個通知

        // 申請通知授權
        func localNotificationAuthority() {
            if #available(iOS 8.0, *) {
                // 創(chuàng)建通知類型
                let typeValue = UIUserNotificationType.Alert.rawValue | UIUserNotificationType.Badge.rawValue | UIUserNotificationType.Sound.rawValue
                let type = UIUserNotificationType(rawValue: typeValue)
                
                // 創(chuàng)建一個操作組
                let category : UIMutableUserNotificationCategory = UIMutableUserNotificationCategory()
                // 設置組標識
                category.identifier = "select"
                
                // 添加組行為
                let action1 = UIMutableUserNotificationAction()
                action1.identifier = "action1"
                action1.title = "action1"
                // 操作行為的環(huán)境條件
                // Foreground: 當用戶點擊了這個行為, 必須進入到前臺才能執(zhí)行
                // Background: 當用戶點擊了這個行為, 在后臺也可以執(zhí)行
                action1.activationMode = .Foreground
                action1.destructive = false // 通過顏色來標識這個行為
                
                // 創(chuàng)建第二個組行為
                let action2 = UIMutableUserNotificationAction()
                action2.identifier = "action2"
                action2.title = "action2"
                action2.activationMode = .Background
                action2.authenticationRequired = true // 是否在解鎖屏幕之后才能執(zhí)行, 如果activation為前臺, 此屬性會被忽略
                action2.destructive = true
                // 在iOS9.0之后, 通知是可以綁定一些操作行為的
                if #available(iOS 9.0, *) {
                    action2.behavior = .TextInput
                    action2.parameters = [UIUserNotificationTextInputActionButtonTitleKey: "回復"]
                }
                
                // 創(chuàng)建操作數(shù)組
                let actions : [UIUserNotificationAction] = [action1, action2]
                
                // 設置操作組
                // 參數(shù)1: 操作行為數(shù)組
                // 參數(shù)2: 通知行為的上下文, 作用在彈窗的樣式
                // Default: 最多可以有四個行為; Minimal: 如果空間不夠, 最多只有兩個行為
                category.setActions(actions, forContext: UIUserNotificationActionContext.Default)
                
                // 創(chuàng)建操作選項組
                let categories : Set<UIUserNotificationCategory> = [category]
                
                let setting = UIUserNotificationSettings(forTypes: type, categories: categories)
                
                UIApplication.sharedApplication().registerUserNotificationSettings(setting)
            }   
      
  2. 點擊操作組會觸發(fā)的方法

    • 當用戶點擊了本地通知的某個操作行為時會調用這個方法

    • 可以根據(jù)操作的標識, 判斷用戶點擊了哪個按鈕, 以做出不同的操作

    • 一定要調用系統(tǒng)提供的回調函數(shù)

        // 當用戶點擊了本地通知的某個行為時調用
        func application(application: UIApplication, handleActionWithIdentifier identifier: String?, forLocalNotification notification: UILocalNotification, completionHandler: () -> Void) {
            
            if identifier == "action1" {
                print("點擊了action1")
            } else if identifier == "action2" {
                print("點擊了action2")
            }
            
            // 注意要調用系統(tǒng)回調的block
            completionHandler()
        }
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末售滤,一起剝皮案震驚了整個濱河市通惫,隨后出現(xiàn)的幾起案子湖蜕,更是在濱河造成了極大的恐慌提完,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件薇缅,死亡現(xiàn)場離奇詭異危彩,居然都是意外死亡,警方通過查閱死者的電腦和手機泳桦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門汤徽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人灸撰,你說我怎么就攤上這事谒府∑岣幔” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵狱掂,是天一觀的道長。 經(jīng)常有香客問我亲轨,道長趋惨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任惦蚊,我火速辦了婚禮器虾,結果婚禮上,老公的妹妹穿的比我還像新娘蹦锋。我一直安慰自己兆沙,他們只是感情好,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布莉掂。 她就那樣靜靜地躺著葛圃,像睡著了一般。 火紅的嫁衣襯著肌膚如雪憎妙。 梳的紋絲不亂的頭發(fā)上库正,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天,我揣著相機與錄音厘唾,去河邊找鬼褥符。 笑死,一個胖子當著我的面吹牛抚垃,可吹牛的內(nèi)容都是我干的喷楣。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼鹤树,長吁一口氣:“原來是場噩夢啊……” “哼铣焊!你這毒婦竟也來了?” 一聲冷哼從身側響起魂迄,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤粗截,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后捣炬,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體熊昌,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年湿酸,在試婚紗的時候發(fā)現(xiàn)自己被綠了婿屹。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡推溃,死狀恐怖昂利,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤蜂奸,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布犁苏,位于F島的核電站,受9級特大地震影響扩所,放射性物質發(fā)生泄漏围详。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一祖屏、第九天 我趴在偏房一處隱蔽的房頂上張望助赞。 院中可真熱鬧,春花似錦袁勺、人聲如沸雹食。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽群叶。三九已至,卻和暖如春咐汞,著一層夾襖步出監(jiān)牢的瞬間盖呼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工化撕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留几晤,地道東北人。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓植阴,卻偏偏與公主長得像蟹瘾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子掠手,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容