網(wǎng)上搜了很多相關(guān)的文章,都是簡(jiǎn)述,不符合自己的要求;更氣人的是花了9.9元,看了某人的一篇不疼不癢的WWDC2018新特性。所以最后下定決心看了個(gè)人覺(jué)得對(duì)開(kāi)發(fā)者有幫助的三個(gè)session,以及一些開(kāi)發(fā)者需要關(guān)注的改動(dòng)。
iOS12新特性
? ? 1、性能提升
(1)iOS12系統(tǒng)中速度提升
????????應(yīng)用啟動(dòng)速度提升40%
????????鍵盤(pán)響應(yīng)速度提升50%
????????相機(jī)啟動(dòng)速度提升70%
iOS12 和 iOS11 的真機(jī)性能對(duì)比視頻:https://v.qq.com/x/page/o0681ydcndr.html
(2)High Performance Auto Layout
在iOS12中對(duì)自動(dòng)布局進(jìn)行了很大的優(yōu)化,如圖1.1,是官方測(cè)試后得到的 iOS 12 和 iOS 11 在特定場(chǎng)景下時(shí)間開(kāi)銷的對(duì)比圖。可以明顯的看到 iOS 12 具有很大的優(yōu)勢(shì)。同時(shí),ken Ferry演講的session中有很多干貨WWDC2018觀看筆記:Auto Layout

?2、功能迭代
(1)UIWebView棄用
在iOS12 中,UIWebView不在被使用,如圖2.1所示。

為什么?
原因就是:iOS平臺(tái)跨域訪問(wèn)漏洞,而造成平臺(tái)跨域訪問(wèn)漏洞的罪魁禍?zhǔn)拙褪?UIWebView。

(2)C++ 標(biāo)準(zhǔn)庫(kù)libstdc++相關(guān)的3個(gè)庫(kù)(libstdc++、libstdc++.6、libstdc++6.0.9 )廢棄
使用libc++代替
為什么?
蘋(píng)果的解釋是libstdc++已經(jīng)標(biāo)記為廢棄有5年了,建議大家使用經(jīng)過(guò)了llvm優(yōu)化過(guò)并且全面支持C++11的libc++庫(kù)。
(3)userNotifications
在iOS12中通知提供了以下五方面的新特性:
????????Grouped notifications :推送分組
? ? ? ? ?Notification content extensions: 推送內(nèi)容擴(kuò)展中的可交互和動(dòng)態(tài)更改Action
????????Notification management :推送消息的管理
????????Provisional authorization: 臨時(shí)授權(quán)
????????Critical alerts :重要提醒
1).Grouped notifications
在iOS12中,?通知分組使用兩種分組方式:自動(dòng)分組(Automatic grouping)和線程標(biāo)識(shí)(Thread identifier).
自動(dòng)分組不需要做額外的操作,系統(tǒng)會(huì)根據(jù)App的bundle id對(duì)推送進(jìn)行分組。如果需要對(duì)通知做更細(xì)致的分組就需要用線程標(biāo)識(shí), 也就是下面的threadIdentifier.
如圖2.2所示:

代碼和實(shí)現(xiàn)效果,如圖2.3所示:


同時(shí),在iOS12系統(tǒng)的手機(jī)中,可通過(guò) setting -應(yīng)用 - Notifications - Notification Grouping來(lái)設(shè)置通知的分組模式。如圖2.3所示
注意:只有設(shè)為 Automatic時(shí),設(shè)置Thread identifier屬性才有效。
?同時(shí),iOS12 支持Summary 定制。
當(dāng)蘋(píng)果自動(dòng)將推送消息的歸攏到一起的時(shí)候,最下邊會(huì)有一個(gè)消息摘要。默認(rèn)格式是:n more notifications from xxx。如圖2.4所示

修改方式: 設(shè)置categorySummaryFormat, 會(huì)顯示summaryFormat, 使用帶categorySummaryFormat的init方法,如圖2.5所示:

數(shù)字定制
有時(shí)會(huì)出現(xiàn)另一個(gè)場(chǎng)景:比如發(fā)送了2條推送消息,一條是“你有3個(gè)邀請(qǐng)函”,另一條是“你有5個(gè)邀請(qǐng)函”。那摘要?jiǎng)t會(huì)顯示你有2更多消息,我們想要的肯定是"你有8個(gè)邀請(qǐng)函"。那這種效果怎么顯示呢?(summaryArgumentCount)
2).推送內(nèi)容擴(kuò)展中的可交互和動(dòng)態(tài)更改Action
配置Notification Content Extention的UUNNotificationExtensionUserInteractionEnabled為YES。
通過(guò)File-New-Target中的 Notification Content Extension 來(lái)創(chuàng)建NotificationViewController。
3).增加了推送消息的管理
展現(xiàn)管理界面:通知消息左滑 或者 進(jìn)入詳情中右上角的,管理界面如圖2.7所示:
Deliver Quietly 控制會(huì)不會(huì)播放聲音;Turn Off 關(guān)閉推送;

4).臨時(shí)授權(quán)(Provisional Authorization)
通知會(huì)出現(xiàn)在通知中心并在應(yīng)用圖標(biāo)上出現(xiàn)標(biāo)記,但不會(huì)顯示在鎖定屏幕上,不會(huì)顯示橫幅,也不會(huì)播放聲音,之后可以選擇正常推送還是關(guān)閉,在申請(qǐng)權(quán)限的時(shí)候,加上provisional即可
5).重要提醒(Critical Alerts)
無(wú)視勿擾模式和鈴聲開(kāi)關(guān)的限制,收到這類通知時(shí)會(huì)伴隨一個(gè)系統(tǒng)或App設(shè)定的提示音 需要獲得授權(quán)。在申請(qǐng)權(quán)限的時(shí)候,加上criticalAlert。
(4) shortcuts
iOS12 提供了語(yǔ)音助手的快捷短語(yǔ)的開(kāi)發(fā),可以通過(guò)自定義一個(gè)短語(yǔ),通過(guò)Siri來(lái)喚起特定的功能。
Shortcuts APIS

1)NSUserActivity的使用
首先,在Info.plist中聲明NSUserActivityTypes

然后,生成對(duì)應(yīng)的NSUserActivity

最后,用戶點(diǎn)擊shortCut 的 處理入口

2)自定義Intents
通過(guò)Intent實(shí)現(xiàn)的shortcut是不啟動(dòng)APP不通過(guò)交互行為即可以直接運(yùn)行的功能,并且可以對(duì)運(yùn)行的結(jié)果給出響應(yīng)反饋。在工程中新建一個(gè)SiriKit Intent Definition File,點(diǎn)擊‘+’新建一個(gè)自定義的Intent,然后添加參數(shù)。之后在Shortcut Type中添加需要用的參數(shù),并且定義在shortcut中的顯示內(nèi)容
編輯器會(huì)通過(guò)這個(gè)文件自動(dòng)生成對(duì)應(yīng)的INIntent類


處理入口和NSUserActivity相同。
參考視頻和文檔:
https://developer.apple.com/videos/play/wwdc2018/220/