大多数浏览器和
Developer App 均支持流媒体播放。
-
使用 AirPods 提升你的 App 音频体验
了解如何使用 AirPods 在你的 App 中创造变革性的音频体验。了解如何结合 AirPods 自动切换功能,使用 AVAudioApplication 支持静音控制,以及如何利用空间音频在你的 App 游戏中创建沉浸式音效。
章节
- 4:20 - AirPods Automatic Switching for macOS
- 6:41 - Press to Mute and Unmute
- 12:02 - Spatial Audio with AirPods
资源
相关视频
WWDC23
WWDC21
-
下载
♪ ♪
Suraj:大家好 在本次讲座中 我们将探讨如何通过 AirPods 提升你的 App 音频体验 我们将向你介绍一些 我们为 iOS 17 和 macOS 14 发布的 AirPods 功能 我叫 Suraj 我是 Apple 头戴式耳机 和配件软件工程团队的 其中一员 让我们开始吧
世界各地的人们都喜爱 AirPods 因为其能在一整天中提供最好的 个人音频体验 每天 有数百万人使用 AirPods 来听音乐、观看电影 与家人 和朋友进行 FaceTime 通话 进行工作通话 或安坐家中完成工作 人们在 Apple 生态系统中使用 AirPods 从 Apple Watch 一直到 Mac 通过 iOS 17 和 macOS 14 我们引入了一些出色的功能 这使得每日跨平台使用 AirPods 变得更为简单和方便 让我们看看这些功能如何改变 AirPods 最常见的使用场景之一 你正在使用 iPhone 上的个性化 空间音频功能享受 AirPods 上的音乐 突然收到一个加入工作会议的通知 当你解锁你的 Mac 加入会议时 你会看到一个 AirPods 已连接的横幅提示 告知你 AirPods 现已准备好并已连接到 Mac
接着 当你加入会议时 就如你所预期的那样 Mac 中 的音频将通过你的 AirPods 播放 你正在 iPhone 上 听的音乐会暂停 在你正进行工作电话时 办公室有人过来与你交谈 或在你远程工作时 有人按你的门铃要送货
现在 你可点按 AirPods 耳机柄 使自己在通话中静音 当你这样做时 你将收到一个 贴心的麦克风 状态横幅和一个音频提示声
然后 如你所期 你可再次点按 AirPods 耳机柄 来取消通话静音并继续会议 当然 你在取消静音时 也会看到横幅并听到提示声
最后 你完成了你的工作会议 是时候放松一下了 你拿起 iPhone 在你最喜欢的 Apple Music 播放列表上按播放 iPhone 中的音频 无缝切回到你的 AirPods 这样你就可以 不紧不慢地继续你的一天
你想为你的 App 解锁神奇的 AirPods 体验 让使用 AirPods 的用户 能轻松跨平台 使用你的 App 吗?
在本次讲座中 我们将介绍 如何优化你的 App 利用这些功能并提供完美体验 我将从 macOS 14 的 AirPods 自动切换开始 以及你的 App 可遵循的最佳实践 以最大限度地利用该功能
然后 我们将介绍 iOS 17 和 macOS 14 中的 点按静音和取消静音功能 最后 我们将讨论空间音频 及其在各 Apple 平台上的支持
让我们从 macOS 的 AirPods 自动切换开始
macOS 14 支持 AirPods 自动切换 根据用户的预定任务 在设备之间进行切换 自动切换算法 使用比如登记到“播放中” 以及输入音频任务 等指标来做出这些决策 好消息是所有 App Store App 以及使用 App Store 之外的 App 沙盒 或选择不使用沙盒的 App 都无需做任何更改即可采用该功能 这些 App 将能够完全使用功能 且无需开发人员进行任何更改 现在 让我们介绍最佳实践 为使用这些功能的用户 提供最佳的 AirPods 体验 在 macOS 上登记“播放中” 自动路由算法现在可以知道 比如 何时正在播放长音频这类数据 这使我们能够做出正确的路由决策
如果你的 App 是媒体或流媒体 App 我们建议你登记到“播放中” 以帮助我们根据情况 优先处理你的音频
如果你是会议或游戏 App 我们不建议登记到“播放中”
我们还建议你使用 Audio Services API 来播放通知 和 App 特定的提示声 这将有助于区分通知和媒体内容 避免意外行为 如果你是会议 App 我们建议仅在会议 或语音会话开始时使用输入麦克风 并仅在实时会议或语音会话 持续时间内保持打开麦克风 对于媒体 App 我们建议你使用用户选择的 默认路由来播放音频 此外 避免在用户暂停音频后静音 如果你必须静音 我们建议将时间 保持在两秒以下 现在 让我们谈谈 AirPods 的 点按静音和取消静音功能 在 iOS 17 和 macOS 14 中 我们通过点按静音和取消静音 为通话中的 AirPods 体验 增加了便利性 用户现在可简单地点按 AirPods 耳机柄在通话中使 App 的麦克风 静音或取消静音 从 iOS 17 开始 所有 CallKit App 都将支持 点按静音和取消静音功能 无需任何额外调用 对于不使用 CallKit 的通信 App 我们引入了新的 API 我将马上进行详细介绍 在所有情况下 iOS 17 将通过静音手势 来静音上行链路音频 播放提示音…… 并通知 App 其已被静音 当有人再次触发相同手势时 iOS 17 将取消 静音上行链路音频 播放提示音…… 并通知 App 已取消静音 该功能为用户带来了很大的便利 让我向你展示如何在 iOS17 上快速添加该功能
我很高兴 向你介绍 AVAudioApplication 这是 AVAudioSession 家族的新成员 AVAudioApplication 是一种 为你的 App 配置 全应用音频行为的方法
让我向你展示 如何使用 AVAudioApplication 快速集成 点按静音和取消静音功能 首先 我们需要导入 AVFAudio 接着 获取 AVAudioApplication 的共享实例 然后我们将需要在通知中心注册 静音手势更改通知 这将使你的 App 可使用 点按静音和取消静音功能
这些通知将通知你 静音手势已更改了你的静音状态 从那里 你可检查 AVAudioApplication 输入的用户信息 muteStateKey 以确定新的状态
收到此通知后 你可根据此通知触发的结果 更新任意内部状态和 UI 此外 当用户 在你的 App 中执行静音操作时 需要更新 AVAudioApplication
正如你所期望的那样 我们提供了设置器和获取器
在 iOS 17 上 将点按静音和取消静音功能 集成到 App 中就这么简单
让我们转到 Mac 重要的是 要注意在 macOS 14 上 点按静音和取消静音的 工作方式有一些不同 就像 iOS 一样 静音状态更改时 你的 App 将收到通知 但是 在 macOS 上 你的 App 负责在执行手势时 静音任何上行链路音频
稍后我将详细介绍 需要选择加入的一些额外 API
最后 请注意 如果你的 App 希望检测被静音发言人 请参阅讲座 “语音处理 API 中的新内容” 以了解支持 该功能的新 API 的详细信息
让我们看看 Mac 需要采用什么措施 请记住 在 macOS 14 上 你的 App 有责任 在执行静音手势时 静音上行链路音频 在 AVAudioApplication 的共享实例上 你需要设置一个 静音状态变更处理器 当用户执行 静音手势时 将调用此处理器 在此 你将静音任何 上行链路音频并更新任何内部状态 这还为你提供了一个拒绝的机会 如果静音操作不适合 你的 App 当前的使用情况 建议勿使用 此处理器进行 UI 更新 因为你将在静音状态更改时继续接收 输入静音状态更改通知 此外 我们在 CoreAudio 框架中 提供了一个新属性 以帮助你快速静音 你的进程中的任何输入音频
启用该属性后 它将在继续执行 IO 的同时 对你的进程中的 任何输入音频进行静音
最后 让我们来介绍 AirPods 的空间音频 AirPods 上的空间音频改变了 全球人们听音乐的方式 以至于今天超过 80% 的 Apple Music 订阅用户 都在听空间音频 随着 iOS 16 的推出 我们将个性化空间音频 提升到了一个新的水平 因为我们 头部和耳朵的大小和形状不同 我们所有人 对声音的感知都是独特的 而这种对个性化的推动 也受到了用户的欢迎 在 macOS 14、 iOS 17 和 Apple tvOS 17 上 我们很高兴宣布空间音频 将持续支持所有三个平台
对于 macOS 我们支持 AVPlayer 的空间音频 以及 AVSampleBufferAudioRenderer API iOS 和 Apple tvOS 支持 AURemoteIO 的空间音频 以及 AudioQueue API 和上述 API
请注意 AudioQueue 和 AURemoteIO 的空间音频没有 API 接口 相反 登记到“播放中”的 App 会自动启用该功能
这将使用户可提供通过控制中心 配置该功能
总结一下 我们发现在 macOS 中 用户和 App 很容易地 从 AirPods 自动切换功能中 获益 事实上 你很可能不需要做任何事 就可以参与更新 然后 我们还了解了 你的 App 可以做什么 以便与 AirPods 有一致的自动切换体验
我们向你介绍了 AVAudioApplication API 以及如何使用其 来添加支持点按静音和取消静音
我们讨论了你如何 能在我们所有跨平台上 为全球用户 提供 AirPods 空间音频 在我们的相关讲座中 你还可以了解 如何在你的 App 中 添加对空间音频的支持 并登记到“播放中” 我希望你能 和我们的团队一样喜欢这个讲座 我们非常高兴能与你 和我们的用户分享这些功能 我们迫不及待地想看到 这一切都在你的 App 中发挥作用 谢谢
-
-
8:25 - Press to Mute and Unmute API
// Adopting AVAudioApplication into your App import AVFAudio // Get the started instance let instance = AVAudioApplication.shared // Register for mute gesture notifications on Notification Center AVAudioApplication.inputMuteStateChangeNotification // Key for mute state AVAudioApplication.muteStateKey // Updating AVAudioApplication’s mute state instance.setInputMuted(...) // Reading AVAudioApplication’s mute state instance.isInputMuted
-
10:52 - Configure the Input Mute State Change handler (macOS only)
// Configure the Input Mute State Change handler (macOS only) instance.setInputMuteStateChangeHandler { isMuted in //... return didSucceed } // Optional: let CoreAudio mute your input for you (macOS only) // Define the Core Audio property var inputeMutePropertyAddress = AudioObjectPropertyAddress( mSelector: kAudioHardwarePropertyProcessInputMute, mScope: kAudioObjectPropertyScopeInput, mElement:kAudioObjectPropertyElementMain) // Enable this property when you want to mute your input UInt32 isMuted = 1; // 1 = muted, 0 = unmuted AudioObjectSetPropertyData(kAudioObjectSystemObject, &inputeMutePropertyAddress, 0, nil, UInt32(MemoryLayout.size(ofValue: isMuted), &isMuted)
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。