注:本文只列出概要及參考資料。詳細(xì)擴(kuò)展待補(bǔ)充敬矩。
1. 關(guān)注點(diǎn)
App Extensions
擴(kuò)展(Extension)是iOS 8中加入的一個(gè)非常大的功能點(diǎn),開發(fā)者可以通過系統(tǒng)提供給我們的擴(kuò)展接入點(diǎn)(Extension point)來為系統(tǒng)特定的服務(wù)提供某些附加的功能租幕。
iOS 10之前凉敲,已經(jīng)提供了6個(gè)extension,iOS 10中又新增了大量extension捅彻。如:
- Call Directory
- Intents
- Intents UI
- Messages
- Notification Content
- Notification Service
- Sticker Pack
App Extension Programming Guide
SiriKit
蘋果開放了Siri接口组去。但是,它目前只針對(duì)如下六個(gè)領(lǐng)域開放:
- Audio or video calling(音視頻聊天)
- Messaging(消息通訊)
- Payments(支付)
- Searching photos(搜索圖片)
- Workouts(健身)
- Ride booking(約車)
當(dāng)用戶使用Siri操作涉及你的服務(wù)時(shí)步淹,Siri會(huì)給你的intent extension發(fā)送一個(gè)intent對(duì)象从隆,它包含了用戶的請(qǐng)求及相關(guān)的數(shù)據(jù)。你可以根據(jù)intent對(duì)象缭裆,產(chǎn)生一個(gè)相應(yīng)的response對(duì)象給Siri键闺。你也可以提供一個(gè)自定義的UI給Siri。
除了使用intent extension澈驼,還可以使用siri interactions辛燥,如果你的App注冊(cè)了相關(guān)的interaction,系統(tǒng)也會(huì)啟動(dòng)你的App盅藻,并把相關(guān)的intent等數(shù)據(jù)傳給它购桑。
可以參考Introduction to SiriKit。及對(duì)應(yīng)的示例UnicornChat氏淑。
wwdc視頻可以參考Session #217勃蜘、Session #225
Speech Recognition
新的Speech.framework可以分析錄好、或?qū)崟r(shí)的語音假残、并把語音轉(zhuǎn)換為文字缭贡。如使用如下簡(jiǎn)單的代碼,即可以完成在線語音轉(zhuǎn)文字:
let recognizer = SFSpeechRecognizer()
let request = SFSpeechURLRecognitionRequest(url: audioFileURL)
recognizer?.recognitionTask(with: request, resultHandler: { (result, error) in
print (result?.bestTranscription.formattedString)
})
使用語音識(shí)別辉懒,需要在Info.plist中阳惹,加入NSSpeechRecognitionUsageDescription
的描述。
Proactive Suggestions
在iOS 10后眶俩,你可以提供一些用戶可以在你App里面做的事情莹汤,這樣,系統(tǒng)可以在額外的地方提高你App的曝光率颠印。如帶了QuickType suggestions
的鍵盤纲岭、地圖抹竹、Siri interactions、鎖屏等止潮。通過一系列的技術(shù)窃判,如NSUserActivity、Schema.org定義的一些markup(與網(wǎng)頁(yè)相關(guān))喇闸、使用一些庫(kù)定義的API袄琳,如Core Spotlight, MapKit, UIKit,和 Media Player frameworks。
iOS 10中燃乍,給UITextInputTraits
加入 textContentType
屬性唆樊,如果設(shè)置了該屬性,系統(tǒng)就會(huì)調(diào)用相應(yīng)的鍵盤刻蟹,并進(jìn)行輸入提示窗轩。如設(shè)置了 UITextContentTypeFullStreetAddress
,它就會(huì)提示用戶最近去過的地方座咆。
如果視頻類的App使用了MPPlayableContentManager
API接口痢艺,iOS 10可以在鎖屏?xí)r,顯示你的專輯介陶,并可以在鎖屏?xí)r播放音樂堤舒。
如果你的App是約車服務(wù)的魂拦,你可以使用MKDirectionsRequest API
爆土,這樣iOS 10在你輸入Get a ride to...
時(shí),就會(huì)提示你的應(yīng)用黔帕。
Integrating with the Messages App
在iOS 10中某残,你可以創(chuàng)建iMessage extension來跟系統(tǒng)的Message App交互国撵,可以讓用戶發(fā)送文字、sticker玻墅、多媒體文件等介牙。你可以創(chuàng)建兩種extension:
- Sticker表情包。
- iMessage app澳厢。它可以讓你在Message App中展示自定義的UI环础,用它來在會(huì)話中創(chuàng)建表情瀏覽器,創(chuàng)建剩拢、發(fā)送线得、更新交互性的消息。
你可以使用Messages.framework
中的APIs來開發(fā)iMessage app
應(yīng)用徐伐」峁常可以查看Messages Framework Reference。
視頻可以參照Session #204、Session #224
User Notifications
iOS 10中引入UserNotifications.framework
角雷。應(yīng)用或擴(kuò)展可以使用這個(gè)庫(kù)在用戶接收到通知前對(duì)通知進(jìn)行接收或修改熬尺。
iOS 10中還引入UserNotificationsUI.framework
。它可以讓你在通知顯示給用戶前谓罗,對(duì)通知界面進(jìn)行修改。你的擴(kuò)展也可以以自定義的操作進(jìn)行響應(yīng)季二。
參考視頻Sesson 707
通知現(xiàn)在支持media檩咱,可以查看高級(jí)的notification教程:
[Session 708] (https://developer.apple.com/videos/play/wwdc2016/708/)
Wide Color
除了rgb,支持更加廣的顏色空間胯舷。
視頻[Sesson 712](https://de veloper.apple.com/videos/play/wwdc2016/712)
App Search Enhancements
iOS 10對(duì)應(yīng)用搜索也進(jìn)行了提升
[Session #223](https://de veloper.apple.com/videos/play/wwdc2016/223)
Widget Enhancements
iOS 10中可以在鎖屏?xí)r顯示widget刻蚯。而且widget可以支持顯示模式,可以選擇收縮桑嘶、或擴(kuò)展視圖炊汹。
Apple Pay Enhancements
iOS 10 引入新的API,讓你更多地使用Apple Pay
與你的網(wǎng)站交互逃顶。
PassKit.framework
引入新的API讨便,可以讓你在不使用UIKit的地方使用Apple Pay
。
加入Apple Pay
的測(cè)試環(huán)境以政“园可以注冊(cè)測(cè)試賬號(hào)。
Security and Privacy Enhancements
iOS 10中引入一些改變盈蛮,來提高你代碼的安全性和保護(hù)用戶的隱私废菱。詳見security
你必須在Info.plist
中加入使用權(quán)限的描述。如你要使用日歷的數(shù)據(jù)抖誉,則要加入NSCalendarsUsageDescription
描述殊轴。
沒加描述可能會(huì)崩潰。
CallKit
新引入的CallKit.framework
可以讓用戶在應(yīng)用中引入系統(tǒng)的電話UI袒炉,而且可以把聯(lián)系人等信息寫入系統(tǒng)的通訊錄旁理。
CallKit
引入app extensions
來進(jìn)行電話攔截和識(shí)別。你可以寫一個(gè)系統(tǒng)擴(kuò)展來告訴系統(tǒng)攔截哪些電話我磁。
庫(kù)的變化
Foundation
- NSDateInterval
- NSLocale
- NSMeasurement
- NSUnit
UIKit
- 新的動(dòng)畫類UIViewPropertyAnimator
- 3D touch中的peek和pop加入
UIPreviewInteraction
和UIPreviewInteractionDelegate
來更方便地定制UI韧拒。 - UIAccessibilityCustomRotor為輔助功能添加更多的定制化、并添加了更多的符號(hào)十性,如
UIAccessibilityIsAssistiveTouchRunning
用來標(biāo)志AssistiveTouch
是否打開等叛溢。 - UIPasteboard加入安全與隱私,加入控制生命周期的選項(xiàng)劲适。
- UIFont中添加
preferredFontForTextStyle:compatibleWithTraitCollection
來更好地在text控件中支持動(dòng)態(tài)字體楷掉。 - 額外的控制
tab bar item
中的badge的背景色和字體屬性。 - 在所有的可滾動(dòng)的view中添加refresh control支持霞势。如UICollectionView烹植。
-
openURL:options:completionHandler
用來替換openURL:
- 新加
UICloudSharingController
和UICloudSharingControllerDelegate
用來支持iCloud分享斑鸦。 - 加強(qiáng)
UICollectionView
和UICollectionViewDataSourcePrefetching
使你可以利用自動(dòng)的prefetch來獲得更好的滾動(dòng)體驗(yàn)。
WebKit
WebKit.framework
中加入webView:shouldPreviewElement:
來支持3D touch的Preview草雕。
AVFoundation
AVFoundation.framework
做了一些加強(qiáng)巷屿。主要是針對(duì)HLS的一些變化。參照視頻Session #510墩虹、Session #504
Core Data
主要作了以下加強(qiáng):
-
NSPersistentStoreCoordinator
支持連接池嘱巾。 - 新增
NSPersistentContainer
類,用來連接诫钓。NSPersistentStoreCoordinator
旬昭、MOC和其他配置資源。 - CoreData與Xcode更緊密菌湃,生成NSManagedObject子類更方便问拘。
- NSManagedObject添加了一些更方便的方法。
- Core Data為swift作了一些接口調(diào)整惧所。
其他庫(kù)更新
其他AVKit骤坐、Core Image、GameKit下愈、GameplayKit或油、HealthKit、HomeKit驰唬、Metal顶岸、ModelIO、Photos叫编、ReplayKit辖佣、ReplayKit、SpriteKit均有不同程度的改動(dòng)搓逾。詳細(xì)請(qǐng)參考官方release notes
卷谈、Api diffs
。
Xcode 8
Xcode 8加了一些新特性霞篡。如Auto Layout的改進(jìn)世蔗、新的Threading Debugger、Memory Debugger朗兵、UI Debugger污淋、Runtime issue等。
Xcode 8開始官方支持插件余掖,原有的第三方插件不能用了寸爆。可以參考wwdc視頻:
github上,已經(jīng)有個(gè)國(guó)人開發(fā)的插件了:
xTextHandler
iTunes Connect
CI
iOS 10中引入prebuild test(xcodebuild 支持test選項(xiàng))赁豆〗龃迹可以更方便地進(jìn)行持續(xù)集成。
Handoff魔种、NSUserActivity
觀看新年的iOS 10 keynote析二,可以明顯看到蘋果的4大平臺(tái),正在更加緊密地整合节预。如叶摄,SiriKit開始在macOS上使用、Apple pay可以在網(wǎng)頁(yè)上支持心铃、可以使用Apple watch進(jìn)行解鎖登錄等。
從iOS 8引進(jìn)的Handoff相關(guān)的Api挫剑,允許你在各個(gè)平臺(tái)去扣、設(shè)備上不間斷地完成同一份工作。如你在iPhone發(fā)表一個(gè)觀點(diǎn)到一半樊破,然后在mac上登錄同一個(gè)賬戶愉棱,完成剩下的工作。
雖然哲戚,現(xiàn)在的App可能只支持iPhone奔滑,但是將來如果要向另外一種終端擴(kuò)展,那么首先就要支持Handoff顺少。
Demo
這里主要使用蘋果自帶的demo進(jìn)行演示朋其。可以到官方sample code中下載脆炎。
2. 從看wwdc視頻開始
首先肯定先看Keynote梅猿,它從用戶的角度描述了iOS的重大更新。然后看Platforms State of the Union秒裕,它從開發(fā)者角度描述了iOS的主要更新點(diǎn)袱蚓。然后觀看自己感興趣的一些地方。這里是比較推薦的幾個(gè)視頻Top 10 WWDC 2016 Videos几蜻。
接下來喇潘,查看官方的release note,對(duì)里面的各個(gè)主題進(jìn)行學(xué)習(xí)梭稚。
接下來颖低,結(jié)合wwdc視頻及對(duì)應(yīng)的sample code進(jìn)行demo。
注: 也可以下載wwdc的手機(jī)客戶端來看視頻弧烤,不過都是標(biāo)清的枫甲,比較模糊。
3. 兼容性
導(dǎo)航條有黑條、顏色值不對(duì)
目前看到不少應(yīng)用導(dǎo)航條會(huì)有一些問題想幻。不知道是預(yù)覽版的bug粱栖,還是導(dǎo)航條的變化,需要關(guān)注脏毯。不過闹究,如果沒做過多的定制的話,一般沒有問題食店。
有些界面會(huì)錯(cuò)亂
App只發(fā)現(xiàn)有界面會(huì)有導(dǎo)航條的問題渣淤。應(yīng)該是frame和contraints混用時(shí),有些沒處理好會(huì)沖突(在iOS9上不會(huì)出現(xiàn))吉嫩,設(shè)置frame前价认,先layoutIfNeeded
強(qiáng)制layout,就沒問題了自娩。
使用iOS9 idk編譯出來的包用踩,在iOS10上,tab背景色變灰
iOS9編出來的包忙迁,在iOS10上顯示出來tabbar的背景色不對(duì)(應(yīng)用中設(shè)置了tabbar的背景圖片)脐彩。用新的sdk編出來的包,沒問題姊扔。
尚未對(duì)iOS10優(yōu)化惠奸。未更新至64位。
有些App會(huì)彈出該警告恰梢。Archive中沒有加64位支持佛南?
有些badge會(huì)顯示...
如圖:
應(yīng)該與iOS 10中的tabbaritem中badge可定制背景色和text屬性有關(guān)。
權(quán)限問題
在訪問通訊錄時(shí)嵌言,強(qiáng)制必須在Info.plist中加入NSContactsUsageDescription
等描述共虑,否則應(yīng)用會(huì)崩潰。
4. 持續(xù)更新
本文中只列出概要呀页,后面會(huì)進(jìn)行更深入的研究妈拌,請(qǐng)關(guān)注我。