開發(fā)者需要了解的 iOS 15
iOS 15 正式版本已發(fā)布,新版本帶來了很多新功能。而針對開發(fā)者,官方也提供了不少的新的 API 以及一些新的框架,讓開發(fā)者能創(chuàng)建更優(yōu)秀的應(yīng)用程序。這里我們就來看看 iOS 15 在開發(fā)方面提供了哪些新功能。
App Store
StoreKit 2 引入了一個現(xiàn)代的基于 Swift 的 API,它利用了新的語言功能,如 Swift 并發(fā)性。使用這個 API 加載產(chǎn)品信息、在您的商店中顯示應(yīng)用內(nèi)購買、允許客戶進(jìn)行購買、管理對內(nèi)容和訂閱的訪問以及接收由 App Store 以 JSON Web 簽名 (JWS) 格式簽署的交易信息。
現(xiàn)在可以訪問 Product 原始 JSON 數(shù)據(jù)以進(jìn)行自定義解碼。
Transaction 上現(xiàn)在提供了一個新的類型屬性 unfinished,該屬性返回應(yīng)用程序仍需要向用戶提供內(nèi)容的任何交易的簽名信息。
StoreKit 2 中提供了新的 onStorefrontChange(shouldContinuePurchase:)。您可以使用此購買選項(xiàng)來確定如果 App Store 店面在交易期間發(fā)生變化,交易是否繼續(xù)。如果未添加此選項(xiàng),則默認(rèn)為 true。
Audio Units
Audio Units 現(xiàn)在提供 Audio Unit host 可以在 iOS 中顯示的自定義視圖。使用 provideUserInterface 屬性來確定 AUAudioUnit 是否具有用戶界面。使用 requestViewController(completionHandler:) 方法獲取視圖的 AUViewController。自定義視圖支持通過 tintColor 屬性設(shè)置視圖的色調(diào)顏色。這可用于將視圖的顏色設(shè)置為每個軌道的不同顏色或匹配應(yīng)用程序的外觀。
AVFoundation
iPadOS 應(yīng)用程序現(xiàn)在可以繼續(xù)使用相機(jī),同時呈現(xiàn)多個窗口并成為屏幕上唯一的應(yīng)用程序。
Core Haptics
如果暫停的 CHHapticAdvancedPatternPlayer 恢復(fù),則 CHHapticEventTypeAudioContinuous、CHHapticEventTypeHapticContinuous 和 CHHapticEventTypeAudioCustom 類型的事件現(xiàn)在恢復(fù)播放中間事件。
您現(xiàn)在可以控制是否將 volume envelope 應(yīng)用于類型資源。默認(rèn)情況下,這些資源使用內(nèi)置的音量 envelope 進(jìn)行播放,該 envelope 在開始時將信號慢慢提升并在結(jié)尾慢慢降低,以避免產(chǎn)生咔嗒聲。
Create ML
Create ML 框架現(xiàn)已在 iOS 和 iPadOS 15 中可用,為構(gòu)建利用設(shè)備 ML 的動態(tài)應(yīng)用程序體驗(yàn)開辟了新的機(jī)會。提供用于圖像分類、聲音分類、文本分類以及手部姿勢和手部動作分類的以任務(wù)為中心的 API,以及用于經(jīng)典表格分類和回歸的 API。
基于 Audio Feature Print 的 MLSoundClassifier 算法可以更快地訓(xùn)練聲音分類器模型,具有更高的準(zhǔn)確性、更低的延遲和更小的模型尺寸。該算法現(xiàn)在是 Create ML 中 MLSoundClassifier 的默認(rèn)選項(xiàng)。
iCloud
iCloud Private Relay 將作為公開測試版發(fā)布,以收集更多反饋并提高網(wǎng)站兼容性。
Foundation
Foundation 現(xiàn)在包括一個自動語法協(xié)議引擎。這可以簡化您的代碼并減少提供的本地化字符串的數(shù)量,因?yàn)樗鼤詣訉Ρ镜鼗址M(jìn)行變形以說明復(fù)數(shù)、語法協(xié)議。它適用于英語和西班牙語。
格式化 API 現(xiàn)在可用,它們專注于格式并消除了創(chuàng)建、配置和緩存格式化程序?qū)嵗男枰C總€ Formatter 類型都有一個格式化函數(shù)。這些函數(shù)具有允許配置和自定義樣式的參數(shù)。
JSONSerialization 和 JSONDecoder 現(xiàn)在支持從 JSON5 解碼。
SortDescriptor、KeyPathComparator 和 SortComparator API 提供了一個 Swift 接口來表達(dá)可歸檔的值排序規(guī)則。
Logging
來自 Swift 的 os_signpost(_:dso:log:name:signpostID:) 是所有平臺上框架操作系統(tǒng)的一部分
Networking
URLSession 發(fā)送的默認(rèn) Accept-Language 標(biāo)頭具有更新的格式和多個區(qū)域設(shè)置的更正值。除了首選語言之外,如果當(dāng)前系統(tǒng)語言與首選語言不同,標(biāo)頭還包括作為后備的當(dāng)前系統(tǒng)語言。此行為會影響鏈接到 macOS 12、iOS 15、tvOS 15 和 watchOS 8 SDK 的應(yīng)用程序。
URLSession 現(xiàn)在包括異步函數(shù)。
隱私
要下載在應(yīng)用隱私報(bào)告中顯示應(yīng)用內(nèi)容的文件,可以選擇設(shè)置 > 隱私 > 記錄應(yīng)用活動。
Safari
底部標(biāo)簽欄經(jīng)過重新設(shè)計(jì),顯示在頁面內(nèi)容下方。還可以選擇在頂部顯示地址欄。
SKAdNetwork
如果開發(fā)者選擇接收 winning postback,設(shè)備現(xiàn)在可以將 winning postback 的副本發(fā)送給廣告應(yīng)用的開發(fā)者。
TabularData
TabularData 是一個新的 Swift 框架,用于分析和操作表格數(shù)據(jù)。您可以使用 DataFrame 讀取 CSV 和 JSON 文件,以及連接、分組和聚合數(shù)據(jù)。
UIKit
對于針對 iOS 15 beta SDK 編譯的應(yīng)用程序,在文本視圖和文本字段中鍵入時,按鍵命令不再攔截文本輸入和文本編輯命令。例如,按下 Delete 鍵始終會刪除一個字符,并且不會觸發(fā) Delete 鍵命令(如果存在)。要讓鍵盤命令攔截文本輸入,請將鍵盤命令上的 WantPriorityOverSystemBehavior 屬性設(shè)置為 true。這也需要鍵盤命令優(yōu)先于焦點(diǎn)鍵盤導(dǎo)航命令,例如箭頭和 Tab 鍵按下。
在 iOS 14 和 iPadOS 14 及更早版本中,當(dāng) autocorrectionType 設(shè)置為 UITextAutocorrectionTypeNo 時,QuickType 欄將被禁用。對于與 iOS 15 和 iPadOS 15 或更高版本鏈接的應(yīng)用程序,QuickType 欄已啟用并顯示拼寫檢查候選。如果新行為不適合您的用例,請將 spellCheckingType 設(shè)置為 UITextSpellCheckingTypeNo 以隱藏 QuickType 欄。
使用 iOS 15 beta SDK 進(jìn)行編譯時,幾個與窗口相關(guān)的關(guān)鍵屬性、方法和通知會更改行為。
