大多数浏览器和
Developer App 均支持流媒体播放。
-
探索 Journaling Suggestions API
了解新的 Journaling Suggestions API 如何帮助用户通过 App 重温生活中的点点滴滴和重大事件,同时保护他们的隐私。探索如何利用 API 检索 Journaling Suggestions 的资源和元数据、调用 App 之上的选择器、让人们保存建议的内容等等。
资源
-
下载
大家好 我叫 René 是 Sensing 及 Connectivity 团队的一员 我将带大家了解 iOS 17 上发布的 Journaling Suggestions API
在 iOS 17.2 中 Apple 推出了手记 App 帮助人们重温生活 记日记有着悠久的历史 花点时间重温和写作 还被证明可以改善身心健康 但有时候 人们可能不知道如何开始 为了帮助用户开始写作 iOS 能检测其生活中有意义的事件 并为其日记提供一点下笔灵感 我们将其称之为 Journaling Suggestions 它们由用户拍摄的照片、体能训练 他们去过的地方等内容组成 Journaling Suggestions 是 Private Access 选择器 因此也可用于你的 App Journaling Suggestions 在与 App 不同的进程中运行 但在其之上呈现 只有人们实际选择的内容 才会传回你的 App 当然 他们可以 在选择并向你的 App 发送建议之前 查看 iOS 为其生成的内容 这让你的 App 可以利用许多 不同类别数据的建议 (例如位置和照片) 而无需提示访问每个类别 因此 如果你正在开发一种日记或 健康 App 来帮助人们重温生活 Journaling Suggestions API 非常适合你 现在我将向大家展示如何使用它 我将首先介绍 Journaling Suggestions API 以及用户隐私如何成为其核心 然后我将通过一个很简单的代码示例 来介绍如何调用选择器 接下来我会演示 如何从建议中检索详细信息 然后解释该 API 中内置的 所有便利能力 以及如何快速将建议内容 集成到 App 中 最后 我将介绍用户第一次使用 Journaling Suggestions 时的体验 以及他们如何配置表单中的内容
首先 我们来了解一下 Journaling Suggestions API 用户隐私的作用 以及一些定义和概念
当选择器显示在屏幕上时 最初你会看到一个建议列表 每个建议都有一个标题 以及许多资源 例如照片、体能训练、访问等等 每个建议最多可以 有 13 个项目内容资源 该列表在两个标签页内整理 一个称为“推荐” 另一个称为“最近活动”
在“推荐”下 选择器将提出建议 以在顶部显示最有意义的内容 我们的排名算法结合了 先进的机器学习技术 在多样性和最新性之间找到平衡 同时兼顾匹配个人最多参与的内容 该标签页还有特别的建议 包括照片记忆中的亮点 以及持续多天的建议 例如每周总结和多日旅行 在“最近活动”标签页 建议以更临时的方式整理 这能帮助人们轻松回顾过去
当有人点击建议时 他们进入一个间隙屏幕 可以查看所有详细信息 以及所有附加的资源内容 轮播视图让他们能够 以更大尺寸查看资源 这很重要 因为他们即将 与你的 App 分享数据 列表视图让他们可以查看 与每个资源相关联的所有元数据 他们可以在每个视图选择或取消选择 各种资源 精心挑选要发送的内容 他们甚至可以编辑建议标题 一旦他们确认所选项 点击“添加到你的应用程序”按钮 即可交付内容 请注意 在设计该功能时 我们是将隐私放在首位的 你的 App 不需要请求许可 因为这会让 App 体验变得很冗余 此外 你的 App 只会收到用户 选择添加的建议内容 这就是 iOS 如何在保护隐私的 同时提出此类有意义的内容 相信大家和我一样对此感到兴奋 我们来看看如何在应用程序中 调用此选择器 你需要采取的操作是 将 Journaling Suggestions 功能添加到你的 App 这将添加适当的权利 让 App 使用 Journaling Suggestions API 为 SwiftUI 代码导入 Journaling Suggestions 框架 创建选择器实例 检测你的选择器实例闭包 以检索选择器发送到 App 的内容 然后将选择器显示在 App 之上 现在让我们开始添加 Journaling Suggestions 功能
添加该功能较为简单 只需在 Xcode 中点击 App 构建目标即可 在“Signing and Capabilitie” 页点击“+ Capability” 找到“Journaling Suggestions” 这会告诉 iOS 你的 App 打算显示选择器 现在我们来看一下 使用 API 的 App 示例
这个简单的 App 只有一个按钮来 调用选择器并检索建议标题 我首先导入框架 并创建带有标签的选择器实例 该选择器带“onCompletion”闭包 它会在用户选择共享内容后提供详情 我在这里只保留标题 以便将其显示在按钮下方 这是结果的演示 通过点击按钮 我可以将 选择器置于 App 之上
我可以浏览 选择一个建议 这内容看起来不错 我将与我的 App 共享该内容
关闭选择器 现在建议标题显示在 App 中 就这么简单 我们已了解过如何配置 Xcode 如何导入 API 以及如何构建简单的演示 来接收建议的标题 但你可以从该闭包函数获取更多内容 事实上 你可以通过单个建议 获得 9 种不同类型的资源 我们先了解一下这些资源 再了解利用照片资源的新示例
体能训练:可通过两种形式表示 具体取决于是否附加路线 在两种情况下 它们均提供额外信息 如持续时间、消耗的卡路里 以及可用的平均心率
联系人:附有其个人资料照片 或在 无照片时生成带姓名缩写的图像
位置:指示用户去过的地方 包括地名和固定位置等元数据
歌曲:包括歌曲标题、专辑 和封面等播放项目
播客:其还包括 播客名称、节目名称和封面
照片:包含照片的 URL
LivePhoto:包含 视频的 URL 及其预览
视频:包含视频的 URL
MotionActivity:包含步数和图标 现在 你可以通过以下方式 在闭包中检索这些资源
当其被调用时,你可以使用建议的 content(forType:) 方法指定 相关资源类型 等待其项目传输过来 例如 如果你想获取照片 可以调用 content(forType:) photo
收到照片后 你可以立即使用以填充视图 在此示例中 通过遍历照片类型的所有项目 将照片内联到列表视图中 再将其作为 AsyncImage 插入 你可从每个项目为其检索 URL
AsyncImage 可能不允许保存图像 但对于视图合成很方便 稍后会介绍 某些资源可转换为其他 SwiftUI 类型以加快集成速度 现在我们来回顾一下 这个改进示例的代码
它从选择器的创建开始
闭包块 检索建议标题和照片资源 然后使用 AsyncImage 将照片插入视图中
这是结果的演示
点击按钮会在我的 App 之上 再次调用选择器
我选择一项建议并点击 “add to my App”
隐藏选择器 现在我和之前一样获得标题 以及从选择器收到的内嵌照片 这就是你从用户选择添加的建议中 检索资源的方式
你已了解如何调用选择器 检索建议 以及检索此建议的照片 你还了解所有 9 种资源类型 每种类型都有自己的属性 在前例中 我请求了所有照片资源并 为其分别创建了 AsyncImage 但实际上还有其他包含图像的资源 这样即可将其全部请求为 UIImage 或 Image View 并同等对待它们 现在我们来查看一下映射 以下资源可以便捷地作为 UIImage 或 Image View 进行检索:联系人/ 歌曲/播客/照片/LivePhoto 例如 如果你想将该图像保存到磁盘 将使用 URL 内容 另外 在前例可以使用相同的代码将 上述资源直接插入到列表视图中 现在 我们来捕获所有 UIImage 兼容的资源
为此我可以修改代码以查看所有 UIImage 兼容资源 而不仅是照片
将其插入列表视图时 我将构造一个 UIImage 而非 AsyncImage 并将包装到项目中的图像传递出去 这就是将资源作为 UIImage 检索的方式 不受特定类型限制 我现在将演示这个更新的示例
请注意 这里不仅显示了照片 而且“歌曲”专辑封面 也被转换为图像
Journaling Suggestions API 文档可供在线查阅
在此提醒一下 当选择器出现时 如何控制 iOS 生成的内容 你无法控制这一点 但它决定了你的 App 可能收到的内容类型 当第一次调用选择器时 无论是在手记 App 中 还是在你的 App 中 将启动一套流程来解释 Journaling Suggestions 功能 你不需要为此做任何事情 iOS 会进行处理
在此流程中 iOS 可感知各类事件或数据 并生成相关建议以供用户选择 它们通过五个开关进行配置: 体能训练的活动 播客和音乐的媒体 与用户互动的联系人 图库照片、回忆和共享照片 以及用户曾去过的重要地点 这些开关将定义 iOS 在选择器中 为其列出的内容
该配置适用于所有应用程序 用户随时可以在设置 App 中 更改此配置 前往“隐私与安全性”下的 Journaling Suggestions 即可
我们来总结一下 全新 Journaling Suggestions API 可助你快速打造出色体验 帮助他们重温生活大小事件 它让你可在 App 之上显示选择器 检索可生成建议的资源和详细信息 供用户选择以添加到你的 App 而且它在进程之外运行 以巧妙的方式充分保护了用户隐私
谢谢观看! 期待你构建出精彩的体验 充分利用 Journaling Suggestions API
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。