本文主要基于蘋果iOS9官方文檔進行參考翻譯,詳細可參考
一彰居、iPad多任務增強
iOS9 增強了對 iPad 用戶的多任務處理如滑動覆蓋(Slide Over)灾茁,分割視圖(Split View)和畫中畫(Picture in Picture)的體驗窜觉。該滑過功能允許用戶選擇一個次要的App并快速地與之交互。分割視圖功能讓用戶能夠同時并排開啟兩個App北专。畫中畫功能(也稱為PiP)允許用戶觀看視頻的一個窗口上面浮動其他屏幕上的App禀挫。
你沒有辦法幫助用戶決定他們什么時候想在屏幕的同時顯示兩個App,因為這一切都是用戶行為你無法控制拓颓。盡管如此语婴,我們還需要做一下幾件事,來確保用戶有一個完美的多任務處理的體驗。
非常重要的是砰左,App 必須合理地利用的系統(tǒng)資源匿醒,以便他可以有效地運行一個 App 的同時,還可以與正常的運行另一個 App缠导。根據(jù)內(nèi)存壓力,系統(tǒng)預先退出消耗最大內(nèi)存的 App廉羔。有關(guān)應用能耗的一些問題,請參閱iOS App能耗指南酬核。
如果你還沒有準備擁抱 iOS 9 所帶來的變化蜜另,那么一定要采用SizeClasses适室,使你的 App 在分屏視圖下看起來不錯嫡意。想了解更多關(guān)于你的 App 應當如何響應用戶的分割視圖與滑動覆蓋,請參考iPad多任務增強捣辆。
與分割視圖,滑動覆蓋一樣,用戶控制他們是否在看視頻的同時以畫中畫的形式啟動另一個應用程序來運行蔬螟。如果視頻播放不是你的應用程序的主要功能,那么請支持畫中畫汽畴。
當用戶選擇畫中畫旧巾,使用AVKit或者AV Foundation的API。視頻播放類中定義的不支持畫中畫的媒體播放器框架在iOS9中將會被棄用忍些。要了解如何準備畫中畫視頻播放的應用程序鲁猩,請參看畫中畫快速指南。
二罢坝、3D Touch
3D Touch給用戶帶來了更多的交互維度廓握。在支持的3D Touch設備上,用戶可以從主屏幕上按壓App圖標可以快速選擇App特定的操作嘁酿。在一個應用程序隙券,人們可以使用按壓操作來獲得一個項目的預覽,在一個單獨的視圖中打開該項目闹司,并響應相應的操作娱仔。
iOS9提供了以下的3D Touch的API:
主屏幕快速響應API提供了添加快捷方式到你的應用程序圖標,預測用戶行為并提供更加快捷的人機交互(參看 UIApplicationShortcut * API,例如UIApplicationShortcutItem)。
UIKit中的peek和pop API讓你能夠輕松地獲得額外的內(nèi)容在你的App(參看UIViewControllerPreviewing游桩,UIViewControllerPreviewingDelegate以及UIViewController中新的方法)牲迫。使用peek快速響應API中提供一個press-enabled替換應用程序的touch-and-hold方法(參看 UIPreview * API,例如UIPreviewAction和UIPreviewActionItem)。
Web視圖peek和pop API,可以啟用的HTML鏈接的預覽信息(參看 WKWebView)借卧。
UITouch中的force屬性允許你添加自定義的force-based到你的App的用戶交互中盹憎。
不管你采用哪些API,你的App必須在runtime時檢查3D Touch的可用性谓娃。要了解更多關(guān)于支持3D Touch脚乡,參看在iPhone上使用3D Touch。對于你的應用程序中使用3D Touch API的例子,參看ApplicationShortcuts中使用UIApplicationShortcutItem和ViewControllerPreviews中使用的UIViewController previewing API奶稠。
三俯艰、搜索
搜索(Search)在iOS 9中賦予了用戶更加出色的方式來訪問你的App內(nèi)部信息,即使它沒有安裝(Installed)。當你的內(nèi)容是可搜索狀態(tài)時锌订,用戶可以通過Spotlight,Safari,Siri在你的App里訪問活動(Activities)及其深度內(nèi)容(Content Deep)竹握。使用搜索的相關(guān)API,決定內(nèi)容索引(Indexed)情況辆飘,即在搜索結(jié)果中顯示什么信息啦辐,用戶從你的App或者網(wǎng)站獲得重定向后的結(jié)果。
在iOS 9中整合搜索內(nèi)容其實很簡單:你在執(zhí)行搜索時不需要任何之前的經(jīng)驗蜈项,并且大多數(shù)開發(fā)者發(fā)現(xiàn)芹关,只需要幾個小時,使他們的內(nèi)容可以普遍的成為可搜索的狀態(tài)紧卒。要了解如何讓你的應用App和網(wǎng)站內(nèi)容的可搜索侥衬,參看App搜索編程指南。
在iOS 9中使用搜索時跑芳,隱私是一個重要的特性轴总。給用戶最好的搜索體驗的同時,也保護他們的隱私數(shù)據(jù),iOS 9提供了以下可用索引:
私有的設備索引(A private on-device index)。每個設備包含一個私有索引博个,該信息不會與Apple設備間共享或同步怀樟。當你創(chuàng)建一個項目可以在用戶的設備索引時,保證只有該用戶可以查看搜索結(jié)果。
Apple的服務器端索引(Apple’s server-side index)盆佣。服務器端的索引只存儲你已經(jīng)適當?shù)卦诰W(wǎng)站上標明的公開數(shù)據(jù)往堡。
** iOS 9提供了以下API來幫助你進行內(nèi)容搜索:**
NSUserActivity類包括新的方法和屬性,可以幫助你構(gòu)建項目索引等用戶執(zhí)行的活動內(nèi)容罪塔,例如訪問一個導航點或創(chuàng)建和查看內(nèi)容投蝉。幾乎每一個App可以利用NSUserActivity API,提供有用的內(nèi)容給用戶征堪。
Core Spotlight framework(CoreSpotlight.framework)提供的API瘩缆,可以幫你添加App的特定內(nèi)容到設備上的索引,并啟用深層鏈接到你的App佃蚜。要了解更多關(guān)于Core Spotlight framework API庸娱,參看Core Spotlight framework參考。
Web markup可以讓你相關(guān)的網(wǎng)頁內(nèi)容成為可搜索狀態(tài)谐算,并幫助你豐富用戶的搜索體驗熟尉。要了解如何標記你的網(wǎng)站,參看標記網(wǎng)頁內(nèi)容洲脂。
此外斤儿,加入了Smart App Banners為用戶提供了一種簡單的方法剧包,直接鏈接到你的應用程序(了解如何使用Smart App Banners,參看App與Smart App Banners)往果。通用鏈接(Universal Links)疆液,讓你使用標準的HTTP或HTTPS鏈接替換自定義URL方案。通用鏈接適用于所有用戶:如果用戶已經(jīng)安裝了你App陕贮,鏈接直接帶他們到你的App;如果他們沒有安裝您的App堕油,鏈接將會在Safari中打開你的網(wǎng)站。要了解更多關(guān)于通用鏈接肮之,參看通用鏈接掉缺。
四、應用瘦身(App Thinning)
應用瘦身幫助你開發(fā)不同的平臺的App提供一個優(yōu)化的自動安裝戈擒。應用瘦身包括以下內(nèi)容:
Slicing眶明。納入資產(chǎn)目錄,并為平臺標記一個只允許App Store提供安裝的標記峦甩。
按需加載資源(On-Demand Resources)赘来。主機允許附加內(nèi)容存儲在iTunes App Store庫中的App獲取所需的資源使用異步下載和安裝现喳。更多地了解這項技術(shù)凯傲,參看 按需加載資源指南。
Bitcode嗦篱。當我們提交程序到App store上時冰单,Xcode會將程序編譯為一個中間表現(xiàn)形式(bitcode)。然后App store會再將這個botcode編譯為可執(zhí)行的64位或32位程序灸促。
要了解更多有關(guān)應用瘦身诫欠,參看 應用瘦身(iOS, watchOS)。
五浴栽、支持從右到左(RTL)語言
iOS的9帶來了從右到左的語言全面的支持荒叼,這使得它更容易為你提供一個翻轉(zhuǎn)的用戶界面。 例如:
標準UIKit的控件右到左的上下文自動翻轉(zhuǎn)典鸡。
UIView定義語義內(nèi)容屬性允許你指定在從右到左的上下文中特定的視圖應該如何出現(xiàn)被廓。
UIImage添加imageFlippedForRightToLeftLayoutDirection方法,該方法可以很容易地在適當時候以編程方式的翻轉(zhuǎn)圖像萝玷。
要了解更多關(guān)于翻轉(zhuǎn)的用戶接口嫁乘,參看 支持從右到左(RTL)語言。
六球碉、應用安全傳輸(ATS)
強制使用應用安全傳輸(ATS)是應用程序和后端之間的安全連接的最佳做法蜓斧。 ATS防止意外泄露,提供安全的默認行為睁冬,并且容易被采納挎春。這也是iOS 9和OS X v10.11中默認開啟的。不管你正在創(chuàng)建一個新的App或者正在更新現(xiàn)有的App,你都應當盡快采用ATS直奋。
如果你正在開發(fā)一個新的應用程序狼荞,你應當考慮只使用更安全的HTTPS協(xié)議。如果你有一個現(xiàn)有的App帮碰,從現(xiàn)在開始你應該盡可能多使用HTTPS協(xié)議相味,盡快給應用剩余部分制定遷移計劃。此外殉挽,通過高級API的通信需要使用TLS 1.2與前向保密(forward secrecy)丰涉。如果你不這樣做,則會報錯斯碌。如果你的應用程序需要請求不安全的域名一死,那么你必須在Info.plist文件中指定這一域名。
七傻唾、擴展點(Extension Points)
iOS 9引入了一些新的擴展點(一個擴展點定義了使用規(guī)則和提供api來使用當您創(chuàng)建一個應用程序擴展區(qū)域)投慈。具體做法是:
網(wǎng)絡(Network)擴展點
使用包隧道提供者(Packet Tunnel Provider)擴展點來實現(xiàn)客戶端定制的VPN隧道協(xié)議。
使用這個應用程序代理提供者(App Proxy Provider)擴展點來實現(xiàn)一個自定義的客戶端透明的網(wǎng)絡代理協(xié)議冠骄。
使用過濾數(shù)據(jù)提供者(Filter Data Provider)和過濾器控制提供者(Filter Control Provider)擴展點來實現(xiàn)動態(tài)伪煤、設備內(nèi)置網(wǎng)絡內(nèi)容過濾。
每個網(wǎng)絡的擴展點都需要從Apple獲得特別許可凛辣。
** Safari 擴展點**
使用共享的鏈接擴展點抱既,使用戶能夠看到在Safari共享鏈接的內(nèi)容。
使用內(nèi)容阻止擴展點給 Safari 阻止列表扁誓,描述你希望在用戶在瀏覽網(wǎng)頁阻止的內(nèi)容防泵。
索引維護(Index Maintenance)擴展點來支持應用數(shù)據(jù)的編制索引,而無需啟動App蝗敢。
音頻單元擴展點讓你的App提供的樂器捷泞,聲音效果,聲音發(fā)生器寿谴,這些更多的使用在像GarageBand锁右,Logic,以及其他音頻單位(Audio Units)App拭卿。擴展點也為iOS帶來了一個完整的音頻插件模型骡湖,讓你在App Store上銷售的自己的音頻單位(Audio Units)。
想了解更多關(guān)于創(chuàng)建應用程序擴展峻厚,參看 App擴展編程指南响蕴。