开发者需要了解的 iOS 15
iOS 15 正式版本已发布,新版本带来了很多新功能。而针对开发者,官方也提供了不少的新的 API 以及一些新的框架,让开发者能创建更优秀的应用程序。这里我们就来看看 iOS 15 在开发方面提供了哪些新功能。
App Store
StoreKit 2 引入了一个现代的基于 Swift 的 API,它利用了新的语言功能,如 Swift 并发性。使用这个 API 加载产品信息、在您的商店中显示应用内购买、允许客户进行购买、管理对内容和订阅的访问以及接收由 App Store 以 JSON Web 签名 (JWS) 格式签署的交易信息。
现在可以访问 Product 原始 JSON 数据以进行自定义解码。
Transaction 上现在提供了一个新的类型属性 unfinished,该属性返回应用程序仍需要向用户提供内容的任何交易的签名信息。
StoreKit 2 中提供了新的 onStorefrontChange(shouldContinuePurchase:)。您可以使用此购买选项来确定如果 App Store 店面在交易期间发生变化,交易是否继续。如果未添加此选项,则默认为 true。
Audio Units
Audio Units 现在提供 Audio Unit host 可以在 iOS 中显示的自定义视图。使用 provideUserInterface 属性来确定 AUAudioUnit 是否具有用户界面。使用 requestViewController(completionHandler:) 方法获取视图的 AUViewController。自定义视图支持通过 tintColor 属性设置视图的色调颜色。这可用于将视图的颜色设置为每个轨道的不同颜色或匹配应用程序的外观。
AVFoundation
iPadOS 应用程序现在可以继续使用相机,同时呈现多个窗口并成为屏幕上唯一的应用程序。
Core Haptics
如果暂停的 CHHapticAdvancedPatternPlayer 恢复,则 CHHapticEventTypeAudioContinuous、CHHapticEventTypeHapticContinuous 和 CHHapticEventTypeAudioCustom 类型的事件现在恢复播放中间事件。
您现在可以控制是否将 volume envelope 应用于类型资源。默认情况下,这些资源使用内置的音量 envelope 进行播放,该 envelope 在开始时将信号慢慢提升并在结尾慢慢降低,以避免产生咔嗒声。
Create ML
Create ML 框架现已在 iOS 和 iPadOS 15 中可用,为构建利用设备 ML 的动态应用程序体验开辟了新的机会。提供用于图像分类、声音分类、文本分类以及手部姿势和手部动作分类的以任务为中心的 API,以及用于经典表格分类和回归的 API。
基于 Audio Feature Print 的 MLSoundClassifier 算法可以更快地训练声音分类器模型,具有更高的准确性、更低的延迟和更小的模型尺寸。该算法现在是 Create ML 中 MLSoundClassifier 的默认选项。
iCloud
iCloud Private Relay 将作为公开测试版发布,以收集更多反馈并提高网站兼容性。
Foundation
Foundation 现在包括一个自动语法协议引擎。这可以简化您的代码并减少提供的本地化字符串的数量,因为它会自动对本地化字符串进行变形以说明复数、语法协议。它适用于英语和西班牙语。
格式化 API 现在可用,它们专注于格式并消除了创建、配置和缓存格式化程序实例的需要。每个 Formatter 类型都有一个格式化函数。这些函数具有允许配置和自定义样式的参数。
JSONSerialization 和 JSONDecoder 现在支持从 JSON5 解码。
SortDescriptor、KeyPathComparator 和 SortComparator API 提供了一个 Swift 接口来表达可归档的值排序规则。
Logging
来自 Swift 的 os_signpost(_:dso:log:name:signpostID:) 是所有平台上框架操作系统的一部分
Networking
URLSession 发送的默认 Accept-Language 标头具有更新的格式和多个区域设置的更正值。除了首选语言之外,如果当前系统语言与首选语言不同,标头还包括作为后备的当前系统语言。此行为会影响链接到 macOS 12、iOS 15、tvOS 15 和 watchOS 8 SDK 的应用程序。
URLSession 现在包括异步函数。
隐私
要下载在应用隐私报告中显示应用内容的文件,可以选择设置 > 隐私 > 记录应用活动。
Safari
底部标签栏经过重新设计,显示在页面内容下方。还可以选择在顶部显示地址栏。
SKAdNetwork
如果开发者选择接收 winning postback,设备现在可以将 winning postback 的副本发送给广告应用的开发者。
TabularData
TabularData 是一个新的 Swift 框架,用于分析和操作表格数据。您可以使用 DataFrame 读取 CSV 和 JSON 文件,以及连接、分组和聚合数据。
UIKit
对于针对 iOS 15 beta SDK 编译的应用程序,在文本视图和文本字段中键入时,按键命令不再拦截文本输入和文本编辑命令。例如,按下 Delete 键始终会删除一个字符,并且不会触发 Delete 键命令(如果存在)。要让键盘命令拦截文本输入,请将键盘命令上的 WantPriorityOverSystemBehavior 属性设置为 true。这也需要键盘命令优先于焦点键盘导航命令,例如箭头和 Tab 键按下。
在 iOS 14 和 iPadOS 14 及更早版本中,当 autocorrectionType 设置为 UITextAutocorrectionTypeNo 时,QuickType 栏将被禁用。对于与 iOS 15 和 iPadOS 15 或更高版本链接的应用程序,QuickType 栏已启用并显示拼写检查候选。如果新行为不适合您的用例,请将 spellCheckingType 设置为 UITextSpellCheckingTypeNo 以隐藏 QuickType 栏。
使用 iOS 15 beta SDK 进行编译时,几个与窗口相关的关键属性、方法和通知会更改行为。