最後更新: 2018-6-11 修正錯別字
祝願今年的高考考生超長髮揮。
WWDC2016年的時候, 蘋果釋出了 UNNotification.framework
, 讓使用者體驗到了全新的通知檢視功能。 在今年WWDC的時候, Apple 對此功能進行了提升, 增加了通知訊息 Grouped 的功能。
試想, 如果你每天微信很繁忙, 有各種群組, 有好友等的, 每天通知一堆堆, 如果能將其進行分組顯示, 想想都很棒。 廢話不多說, 先附上今年的WWDC地址
這個視訊主要介紹了四個方面的內容:(翻譯不好, 就直接上原話了)
- Notification groups
- App grouping
- Custom grouping
- Group summaries
在我邊觀看邊看api的過程中, 實際上也就是 Custom grouping
和 Group summaries
需要開發者注意點, 實際用起來真的非常的簡單。
1. Notification groups
Notification groups 實際上說明, 每個應用的通知是可以按照組來區分的, 而且可以統一的管理(Manager、View、Clear All).
每個應用都可以 Grouped 起來, 當 View
某個 Grouped 的時候, 就可以展開檢視單個 Grouped 的詳細了。
2. App grouping
放兩張圖給你們看 你們就明白了。
3. Custom grouping
並不是所有的 App 只能定義在一個 Group 裡面, 開發者可以根據具體的需求來進行定製。 當然用的是 iOS10 之後推出的 UNNotification.framework
框架。 不熟悉這個框架的童鞋可前往這裡檢視。
通過設定 threadIdentifier
可以將通知進行分組, 當你對通知設定了同一個的 threadIdentifier
之後, 這一類的通知在一定數量後會自動的進行分組。預設為 nil
。 如果你對不同的通知設定不同的 threadIdentifier
的話, 那麼這些不同的是不會被 Grouped 到一起的。。
// 簡單的迴圈新增通知分組, 測試使用
func localNotification() {
for i in 0..<10 {
let notificationContent = UNMutableNotificationContent()
notificationContent.title = "標題 \(i)"
notificationContent.subtitle = "副標題\(i)"
notificationContent.body = "內容\(i)"
notificationContent.threadIdentifier = "LocalNotification"
notificationContent.launchImageName = ""
notificationContent.sound = UNNotificationSound.default
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 60, repeats: true)
let request = UNNotificationRequest(identifier: "localNotication\(i)", content: notificationContent, trigger: trigger)
Thread.sleep(forTimeInterval: 0.5)
UNUserNotificationCenter.current().add(request) { (error) in
}
}
Thread.sleep(forTimeInterval: 300)
UNUserNotificationCenter.current().removeAllDeliveredNotifications()
}
複製程式碼
當然, 你可以可以通過配置檔案來設定:
{
"aps": {
"alert": {
"title": "標題",
"body": "內容",
}
"thread-id": "notification-threadIdentifier" // 配置這行
}
}
複製程式碼
下午用模擬器跑,執行出錯,後面用真機跑, 發現了有bug: 我第二次刪除app 測試, 然後就通知就顯示不出來了, 在系統設定裡面也看不到我的App。 圖 後面補上。
4. Group summaries
開發者可以通過如下方式配置:
let summaryFormat = "%u more messages"
UNNotificationCategory(identifier: "category-identifier",
actions: [],
intentIdentifiers: [],
hiddenPreviewsBodyPlaceholder: nil,
categorySummaryFormat: summaryFormat,
options: [])
複製程式碼
如果是 Grouped 的通知, 可以利用屬性 summaryArgument
來配置。
同樣, 你可以通過配置檔案來設定
{
"aps": {
"alert": {
"title": "標題",
"body": "內容",
"summary-arg": "notification-summaryArgument" // 配置這行
"summary-arg-count": 3
}
...
}
}
複製程式碼
最後提一個summaryArgumentCount
。 這個也很有意思, 就等待你們自己去開發了。。。。。