網上搜了很多相關的文章,都是簡述,不符合自己的要求;更氣人的是花了9.9元,看了某人的一篇不疼不癢的WWDC2018新特性。所以最後下定決心看了個人覺得對開發者有幫助的三個session,以及一些開發者需要關注的改動。
1、性能提升
(1)速度提升
應用啓動速度提升40%
鍵盤響應速度提升50%
相機啓動速度提升70%
iOS12 和 iOS11 的真機性能對比視頻:https://v.qq.com/x/page/o0681...
(2)Auto Layout
在iOS12中對自動佈局進行了很大的優化,如圖1.1,是官方測試後得到的 iOS 12 和 iOS 11 在特定場景下時間開銷的對比圖。可以明顯的看到 iOS 12 具有很大的優勢。同時,ken Ferry演講的session中有很多幹貨WWDC2018觀看筆記:Auto Layout
2、功能迭代
(1)UIWebView棄用
在iOS12 中,UIWebView不在被使用,如圖2.1所示。
爲什麼?
原因就是:iOS平臺跨域訪問漏洞,而造成平臺跨域訪問漏洞的罪魁禍首就是 UIWebView。
(2)libstdc++廢棄
C++ 標準庫libstdc++相關的3個庫(libstdc++、libstdc++.6、libstdc++6.0.9 )廢棄,使用libc++代替
爲什麼?
蘋果的解釋是libstdc++已經標記爲廢棄有5年了,建議大家使用經過了llvm優化過並且全面支持C++11的libc++庫。
(3)userNotifications
在iOS12中通知提供了以下五方面的新特性:
- Grouped notifications :推送分組
- Notification content extensions: 推送內容擴展中的可交互和動態更改Action
- Notification management :推送消息的管理
- Provisional authorization: 臨時授權
- Critical alerts :重要提醒
1)Grouped notifications
在iOS12中, 通知分組使用兩種分組方式:自動分組(Automatic grouping)和線程標識(Thread identifier).
自動分組不需要做額外的操作,系統會根據App的bundle id對推送進行分組。如果需要對通知做更細緻的分組就需要用線程標識, 也就是下面的threadIdentifier.
如圖2.2所示:
代碼和實現效果,如圖2.3所示:
同時,在iOS12系統的手機中,可通過 setting -應用 - Notifications - Notification Grouping來設置通知的分組模式。如圖2.3所示。注意:只有設爲 Automatic時,設置Thread identifier屬性纔有效。
同時,iOS12 支持Summary 定製。當蘋果自動將推送消息的歸攏到一起的時候,最下邊會有一個消息摘要。默認格式是:n more notifications from xxx。如圖2.4所示
修改方式: 設置categorySummaryFormat, 會顯示summaryFormat, 使用帶categorySummaryFormat的init方法,如圖2.5所示:
數字定製
有時會出現另一個場景:比如發送了2條推送消息,一條是“你有3個邀請函”,另一條是“你有5個邀請函”。那摘要則會顯示你有2更多消息,我們想要的肯定是"你有8個邀請函"。那這種效果怎麼顯示呢?(summaryArgumentCount)
2)推送內容更改Action
- 配置Notification Content Extention的UUNNotificationExtensionUserInteractionEnabled爲YES。
- 通過File-New-Target中的 Notification Content Extension 來創建NotificationViewController。
3)增加推送消息管理
展現管理界面:通知消息左滑 或者 進入詳情中右上角的,管理界面如圖2.7所示:
Deliver Quietly 控制會不會播放聲音;Turn Off 關閉推送;
4)Provisional Authorization
通知會出現在通知中心並在應用圖標上出現標記,但不會顯示在鎖定屏幕上,不會顯示橫幅,也不會播放聲音,之後可以選擇正常推送還是關閉,在申請權限的時候,加上provisional即可
5)Critical Alerts
無視勿擾模式和鈴聲開關的限制,收到這類通知時會伴隨一個系統或App設定的提示音 需要獲得授權。在申請權限的時候,加上criticalAlert。
(4) shortcuts
iOS12 提供了語音助手的快捷短語的開發,可以通過自定義一個短語,通過Siri來喚起特定的功能。
Shortcuts APIS
1)NSUserActivity的使用
- 首先,在Info.plist中聲明NSUserActivityTypes
- 然後,生成對應的NSUserActivity
- 最後,用戶點擊shortCut 的 處理入口
2)自定義Intents
通過Intent實現的shortcut是不啓動APP不通過交互行爲即可以直接運行的功能,並且可以對運行的結果給出響應反饋。在工程中新建一個SiriKit Intent Definition File,點擊‘+’新建一個自定義的Intent,然後添加參數。之後在Shortcut Type中添加需要用的參數,並且定義在shortcut中的顯示內容
編輯器會通過這個文件自動生成對應的INIntent類
處理入口和NSUserActivity相同。
參考視頻和文檔:
https://developer.apple.com/v...