開發(fā)者需要關(guān)注的iOS 10更新

注:本文只列出概要及參考資料。詳細(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的描述。

查看Session #509

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)用黔帕。

查看Session #240

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 #204Session #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加入UIPreviewInteractionUIPreviewInteractionDelegate來更方便地定制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:
  • 新加UICloudSharingControllerUICloudSharingControllerDelegate用來支持iCloud分享斑鸦。
  • 加強(qiáng)UICollectionViewUICollectionViewDataSourcePrefetching使你可以利用自動(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視頻:

Session #414

github上,已經(jīng)有個(gè)國(guó)人開發(fā)的插件了:
xTextHandler

iTunes Connect

Introducing Search Ads

CI

iOS 10中引入prebuild test(xcodebuild 支持test選項(xiàng))赁豆〗龃迹可以更方便地進(jìn)行持續(xù)集成。

視頻Session #409

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)注

X. 參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蓬蝶,一起剝皮案震驚了整個(gè)濱河市尘分,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌丸氛,老刑警劉巖培愁,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異缓窜,居然都是意外死亡定续,警方通過查閱死者的電腦和手機(jī)谍咆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來私股,“玉大人摹察,你說我怎么就攤上這事〕ǎ” “怎么了供嚎?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)峭状。 經(jīng)常有香客問我克滴,道長(zhǎng),這世上最難降的妖魔是什么优床? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任劝赔,我火速辦了婚禮,結(jié)果婚禮上胆敞,老公的妹妹穿的比我還像新娘着帽。我一直安慰自己,他們只是感情好竿秆,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布启摄。 她就那樣靜靜地躺著稿壁,像睡著了一般幽钢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上傅是,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天匪燕,我揣著相機(jī)與錄音,去河邊找鬼喧笔。 笑死帽驯,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的书闸。 我是一名探鬼主播尼变,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼浆劲!你這毒婦竟也來了嫌术?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤牌借,失蹤者是張志新(化名)和其女友劉穎度气,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體膨报,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡磷籍,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年适荣,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片院领。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡弛矛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出栅盲,到底是詐尸還是另有隱情汪诉,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布谈秫,位于F島的核電站扒寄,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏拟烫。R本人自食惡果不足惜该编,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望硕淑。 院中可真熱鬧课竣,春花似錦、人聲如沸置媳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拇囊。三九已至迂曲,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間寥袭,已是汗流浹背路捧。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留传黄,地道東北人杰扫。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像膘掰,于是被迫代替她去往敵國(guó)和親章姓。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容