大多数浏览器和
Developer App 均支持流媒体播放。
-
在您的 App 中添加“与您共享”功能
“与您共享”可帮助用户在您的 App 中轻松查找其他人通过“信息”与他们共享的内容。学习如何在您的 App 中支持“与您共享”,并搭配这些内容延续用户在“信息”中的体验。我们将介绍置顶功能如何提供隐式的“与您共享”权限,并提高内容权重帮助自动共享。我们还会介绍如何在“与您共享”工具架中呈现共享内容,并利用“与您共享”属性视图直观地展示这些内容。
资源
相关视频
WWDC22
WWDC20
-
下载
♪ ♪
Karthik: 大家好 我是 Karthik 是信息团队的一名工程师 在本视频中 我将向大家介绍“与您共享” 以及如何在您的 App 中使用它
“与您共享” 是在 iOS 15 中发布的 其设计目的是让用户更容易重新访问 朋友和家人在“信息”中 发送的链接 可使用“与您共享”的 系统 App 包括 Safari 浏览器、新闻、 音乐、播客、 Apple TV 以及照片 App “与您共享”也可以用于浏览内容 很多时候 在我们准备好浏览之前 就已经收到了内容 例如 当您外出购物时 一个朋友向您推荐了一个电视节目 然后您忙了一天就忘记了 但当您在 TV App 中浏览 要观看的电视节目时 “与您共享”就可以帮您 更容易地找到这个节目 “与您共享” 可以方便地从 App 中 获取信息对话 让您无需离开 App 就能了解共享的内容
您的内容可以 在“信息”中被置顶 这样内容就会在 “与您共享”和搜索中提前 这是一个表示内容很重要的信号 并会启动自动共享同意流程 稍后我们将详细介绍这一点 在 iOS 16 中“与您共享”还能包含 您的 App 链接和内容 这样一来“与您共享” 就让您的 App 更方便高效
我先介绍一下您的 App 中 “与您共享”的设计 然后再演示它的工作原理 接着 我会带您了解 如何使用“与您共享”
我们先从设计开始 您将会体验到 “与您共享”的两个部分 “与您共享”工具架 和“与您共享”属性视图 “与您共享”工具架是 App 浏览体验中的 一个专用空间 用于突出显示消息中共享的内容 例如 TV App 的“立即观看”标签页 有一个“与您共享”工具架 音乐和播客中的 “现在就听”标签也是如此
“与您共享”提供的内容 是经过排名和排序的列表 稍后我会在视频中介绍这一点 “与您共享”工具架中的每个项目 都具有丰富的预览和属性视图 预览包含缩略图、标题、 和副标题 (如有) 在本例中 丰富的预览效果包括了播客图片、 剧集名称和节目名称 “与您共享”工具架中的 每个共享内容 还有一个属性视图 它会提供足量信息 让内容的对应情景 一目了然
有一个 Show More 元素 可以扩展视图或导航 来显示您 App 中的 所有“与您共享”内容 属性视图是一个进程外视图 它将安全地显示分享者的姓名和头像 它还会显示内容是否 在“信息”中被置顶 在内容的详细信息视图中 显示属性视图 这将允许用户将您 App 中的内容 连接回其共享的“信息”对话中 例如 当我浏览电视节目时 属性视图可以帮助我回忆起 某位朋友推荐的节目 因此我可以方便地告诉这位朋友 我就要看这个节目了 所有这些操作都能 在 App 中完成 回复后 我马上就能观看节目 属性视图是交互式的 点击视图可以直接从 App 内部 接入“信息”对话 属性视图还提供上下文菜单选项 如回复和移除 回复内容菜单选项的功能 类似于点击视图 而“移除”上下文菜单选项 则能让“与您共享” 停止继续显示内容 您可以将相同的上下文菜单 添加到内容的上下文菜单中 您也可以自定义 “移除”上下文菜单的标题 例如 在 Safari 浏览器中 网页的上下文菜单会显示"Remove Link" 我将在稍后的视频中介绍 如何在您的 App 中执行此操作 现在 您已经了解在哪里展示 “与您共享”工具架 以及在哪里显示属性视图 现在我将向您演示 “与您共享”的工作原理 朋友和家人在“信息”中共享的链接 会显示在“与您共享”中 当至少有一个参与者是联系人时 群组聊天的链接就会出现 “与您共享”是基于 通用链接背后的相同技术 通用链接 可以无缝链接到您的 App 或网站上的内容 用户可以精确控制 “与您共享”的内容
他们可以选择在每个会话 每个 App 或全球范围内 共享“信息”之外的内容 无需提前请求此权限 这是自然发生的 置顶链接是在“与您共享”中 显示内容的隐含权限 置顶内容可始终显示在 App 中的“与您共享”中 当 App 内容在“信息”中置顶时 基于启发式方法 会出现一个启用自动共享的选项 启动自动共享后 App 中的“与您共享” 将显示更多内容
“与您共享”中的内容已调用 “与您共享”工具架上的 第一个项目是由 Siri 建议 根据系统的各种信号整理的 接下来是置顶项目 列表的其余部分按时间顺序排列
Siri 建议使用的信号包括 用户是否看过内容 或与内容进行了互动 内容是否被置顶 内容在何种情境中呈现 您的 App 在提供此反馈方面 发挥了一定作用 稍后我将在视频中详细介绍 所有这些都是为了确保内容 不会过于短暂或过时 在多次共享链接的会话中 “与您共享”只显示最新的消息 当链接在多条“信息”对话中共享时 “与您共享”会通过属性视图 直观地表示这一点 例如 Enrique 和 Sarah 都分享了 芝加哥前 25 名的播放列表 属性视图显示了他们的联系人头像 点击属性视图会出现一个消歧菜单 允许您选择回复哪条“信息”对话 在设计“与您共享”时 安全性和隐私 是首要考虑和重点 属性视图和消歧视图 是在流程之外代表您绘制的 “与您共享” 会通过通用链接关联 来保护您的 App 内容 因此只有您的 App 有访问权 App 无权访问“信息”收件人和对话
现在您了解了 “与您共享”的工作原理 下面将是最激动人心的部分 如何在您的 App 中使用 “与您共享” 首先 采用通用链接 然后 在 Xcode 的 Capabilities (功能) 标签下 添加新的“与您共享”功能 接着 在您的 App 中放置一个 “与您共享”工具架 并将属性视图添加到您的内容中 我简单地谈谈 通用链接的使用
通用链接允许用户智能地跟踪 App 中的内容或网站的链接 采取以下步骤来支持通用链接 首先在 App 和网站之间 创建双向关联 并指定 App 处理的 URL 您可以通过向 App 添加关联的域权限 并向 Web 服务器 添加 JSON 文件来创建它们 接下来 更新 App 委托 以响应系统在通用链接路由到 App 时 提供的用户活动对象 有关更多信息 请观看视频 “通用链接的新功能” 在 iOS 16 中 我们引入了 一个新的 Shared with You 框架 Shared with You 框架中 有三个主要的类: SWHighlightCenter SWHighlight 和 SWAttributionView SWHighlightCenter 是一个类 能帮助您获取 App 中的 “与您共享”内容 SWHighlight 是一个模型对象 用于包装 App 的共享内容 SWAttributionView 则是一个视图 可帮助将内容连接回 “消息”的会话 并显示属性信息
Hihghlight center 是一个简单的对象 它由以下部分组成 Highlights 是 SWHighlight 对象的数组 还是一个委托属性 当“与您共享” 添加、删除或更新内容时 App 会得到通知 Highlight 是通过 SWHighlight 类来显示的 它用于传递在“信息”中共享的 App 内容的 URL 您可以使用它来引用您的内容 呈现丰富的预览 以及导航到您的 App 中的内容 我将向您演示如何在 App 中 列举“与您共享”的内容
首先 创建一个 SWHighlightCenter 的实例 然后设置委托属性 执行 SWHighlightCenterDelegate 方法 使用 hightlight center 的 highlight 属性 来访问 App 中的“与您共享”内容 App 可以选择保留之前的 highlight 列表 以便快速地将该列表 与最新列表区别开来
使用每个 highlight 显示的 URL 属性 来生成 App 内容的丰富预览 在您的 App 中列举 “与您共享”的内容就是这么简单 接下来 我将向您展示 如何为 App 中的“与您共享”内容 添加和自定义属性视图 SWAttributionView 视图 用于显示内容共享者的 姓名和头像 每个 highlight 都有相应的属性视图 在属性视图上设置 highlight 属性 会触发属性信息的进程外呈现
指定属性视图可以接受的最大宽度 属性视图将根据需要填充或调整空间 在最大空间内设置 属性视图的对齐方式 我们来看一个例子
创建 SWAttributionView 实例 并设置 highlight 属性 设置 preferredMaxLayoutWidth 在本例中 它跨越了共享内容缩略图的底部 约束此视图的宽度锚点 或设置其框架宽度 以控制其内容的最大宽度 根据需要使用 UIView 上的 minimumContentSizeCategory 或 maximumContentSizeCategory 属性 设置视图的最大 AX 内容大小类别 在此视图周围提供足够的垂直空间 视图的高度取决于 preferredContentSizeCategory 和生成的字体大小 如果视图高度受到不必要的约束 那么视图可能会被剪裁或无法绘制 在这种情况下 horizontalAlignment 设置为 Leading 也可以设置为 Center 或 Trailing 接下来 我将向您展示如何 自定义属性视图 设置显示情景有助于 通知系统用户如何使用属性化内容 它还会影响 App 中 “与您共享”的内容排名 在将其添加到窗口之前进行设置 属性视图的背景样式可以根据 内容的背景进行自定义 我们来看一个例子 displayContext 属性的 默认值是 summary 这表示正在显示内容以供使用 当用户主动使用内容时 如看电影或听播客时 可将 displayContext 设置为 detail 设置 displayContext 是 您的 App 可以提供的反馈 这将帮助 Siri 建议为 App 的内容进行排名 将属性视图放置在单色背景上时 应将属性视图的背景样式 设置为“Color” 如本例所示 在多色背景上放置属性视图时 使用材质 这将为视图内容设置材质背景模糊 在本例中 Safari 浏览器的登录页面 有一个背景图像 通过设置正确的背景样式 属性视图的内容更加清晰可见 接下来 我将向您展示如何将 “与您共享”的上下文菜单 添加到 App 内容中 并自定义标题 App 内容附带的现有上下文菜单 可通过属性视图的菜单进行补充 此菜单应与它所扩展的上下文菜单 内联或在其末尾添加 可以为“移除”上下文菜单选项 提供自定义标题 字符串应包含单词 Remove (移除) 并正确本地化 在本例中 Safari 浏览器 在其内容的上下文菜单的末尾 将此菜单标题自定义为 Remove Link (移除) 我将向您展示 如何做到这一点 首先 创建属性视图的实例 并设置 highlight 属性 通过 menuTitleForHideAction 为“移除”上下文菜单 提供自定义标题 配置内容的上下文菜单时 请通过 supplementalMenu 属性 从属性视图获取菜单 然后 将它们附加到 内容的上下文菜单中 这些简单的步骤 可以让您的 App 将属性视图上的上下文菜单选项 添加到内容的上下文菜单中 现在 您了解了在 App 中 使用“与您共享”的一切内容 我们回顾一下在 App 中使用 “与您共享”的三个简单步骤 使用通用链接 然后在 Xcode 中添加 新的“与您共享”功能 导入并使用新的 Shared with You 框架 希望您能在“信息”中共享内容 并在您的 App 中 使用“与您共享” 感谢您的时间和关注
-
-
12:06 - Enumerate Shared with You shelf
// Enumerate Shared with You shelf class SharedWithYouViewController: UIViewController, SWHighlightCenterDelegate { let highlightCenter = SWHighlightCenter() override func viewDidLoad() { super.viewDidLoad() highlightCenter.delegate = self } func highlightCenterHighlightsDidChange(_ highlightCenter: SWHighlightCenter) { for highlight in highlightCenter.highlights { let highlightURL = highlight.url // Generate a rich preview for the Highlight } } }
-
13:42 - Setting appearance of Attribution View
// Setting appearance of Attribution View let attributionView = SWAttributionView() attributionView.highlight = self.highlightCenter.highlights[index] attributionView.preferredMaxLayoutWidth = maximumWidthForView
-
14:36 - Horizontal Alignment for Attribution View
// Horizontal Alignment for Attribution View let attributionView = SWAttributionView() attributionView.highlight = self.highlightCenter.highlights[index] attributionView.preferredMaxLayoutWidth = maximumWidthForView attributionView.horizontalAlignment = .leading
-
15:19 - Display Context for Attribution View
// Display Context for Attribution View let attributionView = SWAttributionView() attributionView.highlight = self.highlightCenter.highlights[index] attributionView.preferredMaxLayoutWidth = maximumWidthForView attributionView.horizontalAlignment = .center attributionView.displayContext = .summary
-
17:12 - Add Shared with You Content Menu to your app’s content
// Add Shared with You Content Menu to your app’s content let attributionView = SWAttributionView() attributionView.highlight = self.highlightCenter.highlights[index] attributionView.menuTitleForHideAction = "Remove Item" let contextMenuConfig = UIContextMenuConfiguration(identifier: nil,previewProvider: nil) { [weak self] _ in let additionalMenu = attributionView.supplementalMenu // Append additionalMenu items to your content’s menu items }
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。