大多数浏览器和
Developer App 均支持流媒体播放。
-
认识群组活动
敬请详细了解为 SharePlay 提供支持的框架,并探索您可以为您的 app 用户实施的各种共享体验。探究该框架架构和概念的精简概述,包括群组活动和 AVFoundation 如何协同工作,并学习如何将其实施到您的 app 中。这是详细了解 SharePlay 以及如何在您的 app 中集成群组活动的最佳入手点。
资源
相关视频
WWDC21
-
下载
♪低音音乐播放♪ ♪ 皮尔菲利皮斯:嗨 各位 我是皮尔菲利皮斯 我是通信应用程序团队的经理 待会我的同事巴斯卡会加入我们 很开心大家加入“初探团体活动” 我相信去年大家都意识到 找到方法保持联系 比起过去都更必要了 这对身处在Apple的我们来说 非常重要 我们想给我们的用户 有意义的新方式来保持联系 因此 在iOS 15中 我们创造一个新方式 让大家一起享受活动 让你觉得你跟和你分享的人 是在同一个房间 我们把它叫做“同播共享” 同播共享是由 Group Activities 框架驱动的 在这个课程中 我们会介绍 你可以如何把它用在你的应用程序中 让我们开始进入那些细节之前 让我多介绍一些同播共享上 关键的构成要素 让我们从通信开始 我们认为动态和自然的通信 对有意义的共享体验来说 是非常重要的一部分 因此我们把同播共享直接建立 在FaceTime和信息上 我们对这些app如何成为 大家生活和关系的中心 持续地感到惊艳 尤其是过去这一年 大家不只是用FaceTime和信息 偶尔联络一下 30年前的朋友 我们的用户花很多时间 在跟他们最亲密的人沟通 他们最亲密的朋友、最亲密的家人 他们是那些你会邀请到你家客厅 看电影的人 这正是为什么我们希望 让同播共享更便利 让我解释一下它是如何运作的 它是从一个对话的概念开始 在一个团体开始一个活动前 他们需要加入一个对话 这样所有人都会在一起 和准备好要分享 一旦用户进入对话后 他们就能像他们习惯那样 在信息和FaceTime中 通过文字、音频和视频沟通 在这些通信模式之间切换 是动态和流畅的 因此他们可以轻易地 选择符合当下的方式来沟通 我们也给用户一个一致的系统性方式 来管理他们的对话 用户可以实时邀请新的人进来 或者完全离开对话 一旦你在对话中 用户可以浏览整个系统 并且拜访任何app 身为开发者 你可以通过团体活动 完全免费地使用这些 这就是通信 下一个我们认为很关键的领域 是平台体验 我们希望这个体验很简易、很一致 而且在我们的系统和装置之间 都可以使用 关于团体活动 我们要建立一个可以在iOS、iPadOS macOS之间运作的统一体验 有了WebKit 甚至你的网页 也可以使用团体活动 它在AppleTV上也运作地很好 因此你可以在大屏幕上享受它 当你在对话里面的时候 你所有的装置都会知道 所以你可以从任何装置上加入 而且你可以在多个装置上流畅地使用 最后 我们也设计 让它能带给蓝牙装置 很棒的音频 包含AirPods 做为平台体验的一部分 我们替内容播放做了一些特别的事 尽管我们希望大家彻底利用 这个API的表现 来创造许多不同类型的同播共享活动 我们设计了一些很酷改良 让大家可以毫不费力地 建立共享媒体体验 所有媒体体验的核心都是播放按钮 这是你的用户决定 他们想要把时间 花在什么内容上的时刻 我们的目标是要让系统上的 所有播放按钮 都能使用同播共享 我们希望大家觉得 在你的app中的所有媒体 都准备好要开始一个共享体验 任何他们跟朋友使用FaceTime的时候 就是你发挥功用的地方 我们设计了一个 适用于你现有编码途径的新API 通过使用团体活动 只要在团体对话激活时 现在你的播放按钮就可以开始 这些共享媒体体验 我们也会使用智能窗口 来应付不同的用户行为 让共享体验更轻松 接下来是时间同步的播放 我们认为所有人能在同一个时间 一起大笑 一起微笑 一起对内容产生反应 是非常重要的 同播共享在平台层次上 让播放时间同步 所以你可以直接使用 不用担心会只播放你自己的 说到以同播共享来使用内容 它是一个很难解决的问题 我们希望能让大家和另一个人 体验完全相同的时刻 就算他们身在地球的另一端 想象看到和听到你的朋友 在笑一些还没发生的事 小心剧透! 我们在装置上建立了 全新的播放同步协议 并且深入整合在AVFoundation堆栈中 这代表说某人按下播放 在团体中的所有人都会在同一时间 立刻开始播放 如果跳到最爱的场景 其他人也都会看到 让大家可以在完美的同步下 共同体验那些时刻 感觉就像他们在同一个房间里 这个播放同步化背后的魔法 代表我们不用以任何方式 重新发送你的媒体 所有人都会收到你的全保真视频 因为它就跟平常一样 是从你的app播放 和从你的服务器串流的 通过确保所有观众都在看 最高画质的视频 他们会得到身历其境的社交观看体验 而且绝对不会牺牲你的内容的画质 我们还有一些开创性的成果 在播放期间让通信感觉很自然 有了智能音量 当有人在播放期间说话时 我们会自动闪避那段内容的音频 并且在适当的时候再把音频调回来 所以大家可以通过语音、视频和文字 很自然地沟通 就像他们在同一个房间里 会做的事一样 当然 它在子母画面中运作地很行 所以用户在装置上进行多任务处理时 可以一边使用你的内容 这就是我们在平台的成果的简介 最后是内容 这就是你参与的地方 我们希望用户可以享受 在你的app中可以取得的 那些最棒的内容 当大家在进行FaceTime通话时 他们会希望能进入你的app中 和分享你的内容 同播共享让你可以 延伸你的产品的接触点 以及增加用户 使用你的app的时间 而且这会很有机地发生 现有的用户会在和其他人 使用同播共享时宣传你的app 既然我已经跟大家介绍了 一些同播共享关键的构成要素 让我们把焦点转到团体活动 它是框架的核心概念 团体活动代表一个可以通过同播共享 在FaceTime通话中 和大家分享和享受的对象 让我带大家看一下 用户如何在你的app中 开始一个团体活动 当用户在通话时 他们可以浏览你的app 假设你采用了团体活动 就会通知他们这个app 有支持同播共享 要配置你想要分享的活动 首先你需要建立一个 会实作GroupActivity协议的对象 一旦你配置了你的活动 你要叫出 prepareForActivation API 来开始分享那个活动 这个API会提供用户 将那个活动分享给 所有在FaceTime通话中的人 或者是保留在本机的选项 如果他们决定要和团体分享 团体活动会通知你 并且让你加入GroupSession对象 一旦用户加入团体对话后 他们的视频就会跟团体保持同步 就算当他们播放、暂停 或搜寻视频的时候也会 一旦发生这些事件 团体活动会自动通知用户 像这里显示的一样 最后 一旦用户用完了 他们可以选择替他们自己结束活动 或者是替整个团体 就是这么简单! 现在让我把时间交给巴斯卡 他会向大家一步步地介绍剩下的内容 巴斯卡萨尔玛:谢谢你 皮尔 嗨 我是巴斯卡 我是FaceTime团队的工程师 现在让我们来谈谈一些高阶概念 还有在新框架背后的结构 GroupActivities是一个 Swift原生框架 当用户在进行FaceTime通话时 它能让你在用户和你的应用程序之间 建立共享体验 此外 框架和AVFoundation 也有很密切的整合 让你能轻易地建立 共享视频和音频播放体验 在我们开始谈API背后的 高阶概念之前 我想要先介绍API两个关键的部分 它们是GroupActivity 和GroupSession GroupActivity是你的app 用来定义共享体验的框架 它上面有你的应用程序 在进行共享体验时需要的信息 例如 如果你在进行一个 共享音频或视频播放体验 它上面可能会有正在播放内容的URL 或是你的应用程序可能会提供 一个自定义共享体验 例如 你可能正在提供 一起画画的体验 如果是这样 它上面会有 关于用户在画什么的信息 GroupSession基本上是 正在参与共享体验的 团体的代表 它可以访问 例如团体中的参与者这样的内容 在框架中还有额外的API 让你和GroupSession一起使用 在装置间传送和接收数据 请注意GroupSession 不是用来交流大量的数据 举例来说 如果你在建立 共享聆听体验 GroupSession不是用来 交流歌曲的内容 而是AVFoundation会用这个通道 通过交流播放、暂停或搜寻命令 来让内容同步 另外 由GroupSession 提供的通信媒体 是端到端加密的 这代表在装置上 只有你的应用程序 可以读取在这个信道交流的数据 现在在屏幕上有两支手机 左边那支是我的手机 右边那支是我同事皮尔的手机 我们正在进行FaceTime通话 而且我们在屏幕上 有一个范例应用程序 叫做“超棒的app” 这个app准备好要在我和皮尔之间 开启一个共享体验 这个例子中 左边装置上的应用程序 会启动活动 这个应用程序要做的第一件事 就是建立一个会遵守 GroupActivity协议的对象 在这里显示的例子中 会遵守GroupActivity的 是AwesomeActivity对象 像我前面说过的 这个遵守GroupActivity协议的对象 包含关于共享活动的信息 例如 如果你是建立一个 共享播放体验 它会有关于要播放什么内容的信息 或是你要建立一个自定义体验 例如一起画画 它会有关于要画什么的信息 一旦app建立了活动 下一件要做的事 是调用在活动上的 prepareForActivation 这会让用户看到一个提示符 要求开始活动的权限 我们希望在开始一个活动前 先取得用户的同意 才不会吓到他们 因此 这个步骤是必要的 最后 在用户授权 可以开始活动后 你的app需要在活动对象上 调用“激活” 这会告诉系统 你的app想要开始一个共享体验 接着 让我们来谈谈观察对话 这里是我们前面看过的同一个app 应用程序在这时候 已经调用活动对象上的“激活” 接着你的应用程序必须通过 在GroupSession类别上的 AsyncSequence 迭代传入的对话 接着 当对话出现时 应用程序会收到用于共享体验的 GroupSession对象 请注意不论你的应用程序 正在启动app 或是在远程装置上接收对话 你的应用程序都会进行同样这个步骤 如果想更了解 启动和观察团体对话 我建议大家去看这个WWDC课程 现在应用程序收到对话了 它需要在加入对话前先把自己设定好 根据应用程序特定的使用案例 在加入对话前设定应用程序 可能代表不同的内容 举例来说 如果你在建立一个 像是一起画画的自定义体验 这可能代表事先加载 共享体验所需要的资产 你的用户才能够加入体验 然而 假设你的应用程序 是提供一个共享媒体播放体验 那么它可能涉及像这样的内容 你的应用程序会将 你的AVplayer的 AVplaybackCoordinator 连结到GroupSession 这么一来 和它相关的AVplayer 可以通过框架提供的通信通道 来同步内容 要记住 这个同步支持不只局限于AVplayer 你可以使用你手上其他任何 用户视频播放器 而且依然可以通过AVDelegating playbackCoordinator 来支持同步 最后 一旦你完成设定你的应用程序 你的应用程序会调用 GroupSession上的“加入” 只要调用“加入”后 系统会在不同装置间运行的app之中 设定端到端加密通道 这时候 你的应用程序已经准备好 要来同步数据 并且让你的用户参与在共享体验中 如果你在建立一个自定义体验 你的应用程序可以用这个通道 来交流数据 让你的用户在同步的状态中 AVFoundation也会使用这个通道 在用户按下播放、暂停 和略过等等的时候 通过交流播放状态 让媒体播放保持同步 要注意这个通道 不是用来交流大量的数据的 而是用来交流让你的用户 保持同步的信息 现在你的应用程序在一个对话中 你的用户正在享受共享体验 还有一件事可以帮助用户 有更丰富的体验 那就是利用框架来公告事件 事件让你的用户知道在共享体验中 发生了什么事 例如 当有人播放、暂停 或是略过一首曲目时 你可以公告事件来让你的用户知道 公告事件会让系统显示一个 告诉你的用户关于这个事件的通知 在我们目前的API中 只能让大家公告 关于媒体播放体验的事件 你可以免费得到它 如果你用的是AVplayer 或是AVDelegating playbackCoordinator 不过 如果你没有用这两种 你的app还是可以通过框架 来公告事件 想更了解关于提供自己的自定义体验 和关于公告事件的内容 我会推荐大家看这个WWDC课程 总结一下 团体活动是一个全新的 Swift原生框架 它能让你在FaceTime上 建立共享体验 这个框架是跨平台的 并且可以在iOS、macO、iPadOS 和tvOS上使用 它和AVFoundation有紧密的整合 可以让你的app提供 共享媒体播放体验 最后 它也能在macOS的网页上 支持播放同步 说到这里 我想谢谢大家 观看我们的课程 祝大家有个美好的WWDC21! ♪
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。