花絮
蘇州經歷了10多天的40℃+的高溫。半個多月的35℃+的天氣,今天終于下雨了,下雨天,睡覺天。炎熱的天氣,使煩躁的心情,讓學習的動力一天天在減少。對于代碼的興趣也在慢慢減退,對待學習這件事也是一推再推,工作也正式由PHP轉行成了iOS(也許只有這幾天),剛好把學到的通知新特性總結一下:(Demo使用的是swift寫法) Demo
主要內容包含:
- iOS10以后的通知詳解資料地址(基礎的資料網上很多,本人就不一一寫了)
- 通知實戰的演練gif動畫效果
- 實現通知的自己的總結,以及通知類之間的關聯(本人覺得這部分很重要)
- 項目和
traget
之間數據的共用 - 多個
target
之間和項目之間使用pod
iOS10 通知的基礎資料地址
- 越越博客(本地通知)
- 越越博客(遠程通知)
- 徐不同
-
一縷殤流化隱半邊冰霜
等,網上還有很多比較好的通知文章
解釋兩個基本擴展(Notification Content
、Notification Service
)
- 很多人都認為
Notification Content
是為了處理本地通知的,其實不是的,Notification Content
其實是用來自定義長按通知顯示通知的自定義界面, -
Notification Service
是用來處理遠程通知的,我們可以在遠程通知到來之際,我們在Notification Service
里面由30s
的時間來處理這條通知的
創建target第一步
通知相關的target
創建完成界面
注意:content調用,必須在info里面設置,通知的category的indetifier
category的indetifier
注意:service調用,在通知的內容里面設置``mutable-content:1`注意必須是數字1,如果是"1"字符串也是不行的
以上兩個注意非常重要,重要的事情說三遍
以上兩個注意非常重要,重要的事情說三遍
以上兩個注意非常重要,重要的事情說三遍
通知實戰的演練gif動畫效果
-
顯示Action按鈕
顯示Action按鈕 -
顯示回復輸入框
顯示回復輸入框
-
攜帶圖片的通知且可以添加Action
攜帶圖片的通知且可以添加Action -
攜帶圖片的通知且調用的是自定義界面
攜帶圖片的通知且調用的是自定義界面 -
攜帶gif的通知且調用的是自定義界面
攜帶gif的通知且調用的是自定義界面
-
調用自定義界面,并且可以在app啟動前處理按鈕(*注意:只用在App在使用自定義界面(也就是使用Notification content擴展)的時候,我們才可以預先處理按鈕點擊)
調用自定義界面,并且可以在app啟動前處理按鈕 -
顯示一下通知在后臺的刪除功能
刪除通知
同樣我們也是可以根據遠程通知在Notification Service
里面進行通知的刪除,更新,或者查看沒有到達用戶手機的通知,從而進行你需要的操作
image.png
func localImage()->URL?{
let count = Int(arc4random_uniform(4));
let imageName = imagas[count];
let url = Bundle.main.url(forResource: imageName, withExtension: nil);
return url;
}
func saveServiceImageToDic(_ stringUrl:String) -> URL? {
let path = "image.png".wj_getCachesPath();
let url = URL.init(fileURLWithPath: path);
let data = try? Data.init(contentsOf: URL.init(string: stringUrl)!);
guard data != nil else {
return nil;
}
try? data?.write(to: url);
return url;
}
3.實現通知的自己的總結,以及通知類之間的關聯(本人覺得這部分很重要)重要
1.UNUserNotificationCenter 是通知的管理大腦,我們要把通知的觸請求到UNUserNotificationCenter里面,UNUserNotificationCenter會根據通知請求(UNNotificationRequest)里面的通知本身(UNNotificationContent)里面的設置來響應設置的通知
2.UNNotificationRequest 是通知請求,我們是把通知的觸發器和通知本身來創建一個通知請求,并可以直接添加到通知中心里面。我們可以在通知中心根據不同的indentifier來區分請求,其實一個請求就是一個通知
3.UNNotificationTrigger 通知觸發器,抽象類,一般使用子類UNPushNotificationTrigger(遠程通知)、UNTimeIntervalNotificationTrigger(間隔觸發器)、UNCalendarNotificationTrigger(日歷觸發器)、UNLocationNotificationTrigger(地區觸發器),其中間隔觸發器、日歷觸發器、地區觸發器都是本地通知
4.UNNotificationContent 通知內容本身,我們可以設置通知的title。body、useinfo、sound、brage等屬性來。但是它是只讀對象,我們一般使用它的子類UNMutableNotificationContent來設置。當然我們也是可以設置通知本身的category或者Attachment
5.UNNotificationCategory 通知的分類,我們可以根據通知分類的indenterfiter來使用Notification Content擴展來自定義展示通知內容
6.UNNotificationAction 通知按鈕,我們可以將創建的category來制定action(也就是按鈕),當我們點擊按鈕的時候,我們可以在appdelegate里面func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) 來獲取點擊的按鈕,特別是回復按鈕比較使用
7.UNNotificationAttachment 通知的附件,附件可以攜帶,音頻5M 圖像10M支持 jepg,png。git 視頻50M,注意:如果是網絡信息,這些附件必須是https連接,并且notification servicer只由30秒的下載時間
以下是附加部分
4.項目和traget之間數據的共用
個人理解:其實項目和trager資源是可以公用的,一般默認情況下,資源是分開的,只要我們給
target
添加上就就可以使用了。
image.png
5.多個target之間和項目之間使用pod
image.png
最后奉上。自己寫的 Demo,如有不對,請大家留言,七秒及時更正