花絮
蘇州經(jīng)歷了10多天的40℃+的高溫荤傲。半個多月的35℃+的天氣垮耳,今天終于下雨了,下雨天遂黍,睡覺天终佛。炎熱的天氣,使煩躁的心情雾家,讓學(xué)習(xí)的動力一天天在減少铃彰。對于代碼的興趣也在慢慢減退,對待學(xué)習(xí)這件事也是一推再推芯咧,工作也正式由PHP轉(zhuǎn)行成了iOS(也許只有這幾天)牙捉,剛好把學(xué)到的通知新特性總結(jié)一下:(Demo使用的是swift寫法) Demo
主要內(nèi)容包含:
- iOS10以后的通知詳解資料地址(基礎(chǔ)的資料網(wǎng)上很多,本人就不一一寫了)
- 通知實戰(zhàn)的演練gif動畫效果
- 實現(xiàn)通知的自己的總結(jié)敬飒,以及通知類之間的關(guān)聯(lián)(本人覺得這部分很重要)
- 項目和
traget
之間數(shù)據(jù)的共用 - 多個
target
之間和項目之間使用pod
iOS10 通知的基礎(chǔ)資料地址
- 越越博客(本地通知)
- 越越博客(遠程通知)
- 徐不同
-
一縷殤流化隱半邊冰霜
等鹃共,網(wǎng)上還有很多比較好的通知文章
解釋兩個基本擴展(Notification Content
、Notification Service
)
- 很多人都認為
Notification Content
是為了處理本地通知的,其實不是的驶拱,Notification Content
其實是用來自定義長按通知顯示通知的自定義界面霜浴, -
Notification Service
是用來處理遠程通知的,我們可以在遠程通知到來之際蓝纲,我們在Notification Service
里面由30s
的時間來處理這條通知的
創(chuàng)建target第一步
通知相關(guān)的target
創(chuàng)建完成界面
注意:content調(diào)用阴孟,必須在info里面設(shè)置,通知的category的indetifier
category的indetifier
注意:service調(diào)用税迷,在通知的內(nèi)容里面設(shè)置``mutable-content:1`注意必須是數(shù)字1永丝,如果是"1"字符串也是不行的
以上兩個注意非常重要,重要的事情說三遍
以上兩個注意非常重要箭养,重要的事情說三遍
以上兩個注意非常重要慕嚷,重要的事情說三遍
通知實戰(zhàn)的演練gif動畫效果
-
顯示Action按鈕
顯示Action按鈕 -
顯示回復(fù)輸入框
顯示回復(fù)輸入框
-
攜帶圖片的通知且可以添加Action
攜帶圖片的通知且可以添加Action -
攜帶圖片的通知且調(diào)用的是自定義界面
攜帶圖片的通知且調(diào)用的是自定義界面 -
攜帶gif的通知且調(diào)用的是自定義界面
攜帶gif的通知且調(diào)用的是自定義界面
-
調(diào)用自定義界面,并且可以在app啟動前處理按鈕(*注意:只用在App在使用自定義界面(也就是使用Notification content擴展)的時候毕泌,我們才可以預(yù)先處理按鈕點擊)
調(diào)用自定義界面喝检,并且可以在app啟動前處理按鈕 -
顯示一下通知在后臺的刪除功能
刪除通知
同樣我們也是可以根據(jù)遠程通知在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.實現(xiàn)通知的自己的總結(jié),以及通知類之間的關(guān)聯(lián)(本人覺得這部分很重要)重要
1.UNUserNotificationCenter 是通知的管理大腦愿题,我們要把通知的觸請求到UNUserNotificationCenter里面损俭,UNUserNotificationCenter會根據(jù)通知請求(UNNotificationRequest)里面的通知本身(UNNotificationContent)里面的設(shè)置來響應(yīng)設(shè)置的通知
2.UNNotificationRequest 是通知請求蛙奖,我們是把通知的觸發(fā)器和通知本身來創(chuàng)建一個通知請求,并可以直接添加到通知中心里面杆兵。我們可以在通知中心根據(jù)不同的indentifier來區(qū)分請求雁仲,其實一個請求就是一個通知
3.UNNotificationTrigger 通知觸發(fā)器,抽象類琐脏,一般使用子類UNPushNotificationTrigger(遠程通知)攒砖、UNTimeIntervalNotificationTrigger(間隔觸發(fā)器)、UNCalendarNotificationTrigger(日歷觸發(fā)器)骆膝、UNLocationNotificationTrigger(地區(qū)觸發(fā)器)祭衩,其中間隔觸發(fā)器、日歷觸發(fā)器阅签、地區(qū)觸發(fā)器都是本地通知
4.UNNotificationContent 通知內(nèi)容本身掐暮,我們可以設(shè)置通知的title。body政钟、useinfo路克、sound、brage等屬性來养交。但是它是只讀對象精算,我們一般使用它的子類UNMutableNotificationContent來設(shè)置。當(dāng)然我們也是可以設(shè)置通知本身的category或者Attachment
5.UNNotificationCategory 通知的分類碎连,我們可以根據(jù)通知分類的indenterfiter來使用Notification Content擴展來自定義展示通知內(nèi)容
6.UNNotificationAction 通知按鈕灰羽,我們可以將創(chuàng)建的category來制定action(也就是按鈕),當(dāng)我們點擊按鈕的時候鱼辙,我們可以在appdelegate里面func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) 來獲取點擊的按鈕廉嚼,特別是回復(fù)按鈕比較使用
7.UNNotificationAttachment 通知的附件,附件可以攜帶,音頻5M 圖像10M支持 jepg倒戏,png怠噪。git 視頻50M,注意:如果是網(wǎng)絡(luò)信息,這些附件必須是https連接杜跷,并且notification servicer只由30秒的下載時間
以下是附加部分
4.項目和traget之間數(shù)據(jù)的共用
個人理解:其實項目和trager資源是可以公用的傍念,一般默認情況下,資源是分開的葛闷,只要我們給
target
添加上就就可以使用了憋槐。
image.png
5.多個target之間和項目之間使用pod
image.png
最后奉上。自己寫的 Demo孵运,如有不對秦陋,請大家留言,七秒及時更正