大多数浏览器和
Developer App 均支持流媒体播放。
-
探索与第三方配件的 Nearby Interaction
了解在配备 U1 的设备上运行您的 app 时如何与超宽带 (UWB) 第三方配件交互。我们将向您展示如何使用 Nearby Interaction 框架基于标准的技术,实现与各种配件的精确且区分方向的交互。了解关于配件和 app 开发入门的资源,如开发套件、示例代码、规格文档、以及支持的技术提供商。要了解关于 Nearby Interaction 的更多信息,请查看本节链接的框架文档。如果您是配件生产企业,或者正在考虑成为配件生产企业,请务必查看 Nearby Interaction 配件规范文稿和入门资源。
资源
相关视频
WWDC22
WWDC21
WWDC20
-
下载
♪ ♪ 大家好 我是雅哥布鲁斯基 我是Apple定位技术 团队内的工程师 在本影片 我将谈及 一些最新的技术改良 如同今年推出的 近距离互动框架等不同新功能 这近距离互动框架 令我们更方便地 善用Apple超宽带技术芯片 U1的独有功能 以及建立 近距离电子设备之间的 准确及空间互动 这与强化Airtag的“精确查找功能” 与iPhone和HomePod mini之间的 流畅接力功能 为相同技术 这就是我们今天会谈及的 我们会先从用户许可流程 的相关更新开始 之后 我们会介绍 为设有第三者硬件的近距离互动 而建立的新API
最后 我们会讨论 应用程序开发者的资源 在配件的生产外 如何开始把这些新的API 应用于程序和第三者硬件 在深入了解前 对于刚刚认识近距离互动 或需要重温的你 我们先做一个简单的概述 说说如何在程序里应用这一个框架 你会首先建立一个会话实例 这将会是与近距离电子设备 设定及执行空间互动 的重心 之后 需要指定程序的一部分 令它与NI会话委托协议兼容 此委托会从框架接收更新
下一步需要 创建一个将作为NI设定子类的 设定对象 例如 你可以在创建 一个两部iPhone的会话时 建立一个近距离对等式设定 让它执行程序 当你以你刚创建的设定 执行一个会话时 近距离互动就会为你的程序 提供一系列的近距离对象更新 更新包含 各个近设备的距离 以及 在某些情况下 方向 这些都紧密地在会话内 担任重要的角色
假若你们各位希望更深入了解 不同API的框架 请看去年的Apple公司 WWDC开发者大会的其中一场讲座 “认识近距离互动” 为了取得如设备的距离 或者方向等数据 应用程序需要获取用户的许可
那么 我们就讨论一下 今年与用户许可流程的相关改善 这是iOS 14近距离互动的许可流程 这个提示会在 程序首次使用时 和第一次执行会话时出现 在快讯的选择上 “不容许”和“容许一次” 这两者提供了明确的选项 但由于这许可是一次性的 在其他特定情况下 有可能会出现其他附加提示 因此今年 将会有新方法 在启动近距离互动上 获取用户的许可 这是对于iOS 15内的 新近距离互动的许可提示 感受上好像没什么差别 但在某些重点上有所区别 系统在第一次程序 执行NI会话时 会自动展示出许可提示 因此 你们有需要确认 在执行NI会话时 亦有一个清晰明确的用户意图 这样 对你们的用户来说 就会更容易去理解 为何程序的特定功能 需在有许可下才可以继续近距离互动 让我们一起来看看 提示上的一些新选项 新的“OK”按钮会在程序进行时 给予程序许可 不论用户是否同意容许 程序使用近距离互动 此许可提示不会再出现
由iOS 15开始 所有使用近距离互动的程序 都会在设置中显示出来 因此 如果用户选择改变主意 都可以前往设置程序内 更改其他程序的近距离互动许可 请谨记在开发你的程序时 清楚了解这一点
让我们来总结一下新的 近距离互动的用户许可流程
在接受新的许可提示后 会给予程序一个持续的许可 在程序进行时 同时使用近距离互动
此一提示会在 你程序内的Info.plist文件内 提交一个由你所提供的 Usage description字符串 在此目的字符串中 请谨记要清晰及准确 并说明你程序的哪些独有功能 需要使用近距离互动
在唯一一次的提示出现后 你的程序名字及图示 会出现在设置的程序上
意即用户可以随时地 改变程序的许可状况 当你的程序缺乏使用 近距离互动的应有许可 你的NI会话 亦会因许可码错误而无效 因此 如果你的程序主要功能依赖 使用近距离互动 请清楚地向你们的用户 作出解释及引导他们 在适当时候到设置内页 这便是iOS 15的新许可提示
现在 我们十分期待向你们介绍 一些新的API 这些API 令使用与第三者硬件兼容的 近距离互动变得可能 我们希望一个API 可以与你们 各位所希望开发的不同配件兼容 因此 我们就把近距离互动 对第三者硬件支持性 建立于我们 和不同工业集团的标准之上
同时 在你们的原型设计、试验 及建设配件上提供帮助 我们与多家芯片组生产商合作 它们都有能力生产 含有硬件和固件的开发工具包 有能力与iPhone内的U1 互相操作 在开发工具包以外 我们也提供一些 可以不受限地与开发工具包 兼容的应用程序程序代码样本 这样 把它们放在一起 你们的开发项目就可以 从一个完美的起点出发
假若你们是配件生产商 请留意近距离互动 配件协议详细说明文件 此文件在Apple开发人员网站的 “开发人员预览”中可以看到 不论你只想利用此新科技 做一些小更新 或者已经准备好把此超宽带 输入你的配件内 我们都一起来看一看一个简单例子 好让你们看看如何 利用第三者配件 使用近距离互动API 让不同功能 建立于用户与配件的实际距离 可以成为一种 将与设备互动流畅化的有力方式 我们先假设你正在开发一个配件 你希望把超宽带融合进去 使一系列的特色功能 有效地令配件变得与众不同 由于超宽带可以提供准确的距离 你会用它来保留你在不同区域 或者地区 使用配件的踪迹 假设你在界定了一个 装置一米半范围内的区域 再界定另一个三米范围内的区域 然后 再假设你介意这些距离的原因 是因为当用户进入了 三米范围内的区域 就可以启动功能A 当用户进入一米半范围内 就可以启动功能B
那么 这应该如何在你 使用近距离互动框架的 程序内实践呢? 首先 近距离互动需要你的程序 和你的配件在某程度上 可以互相交换数据
就正如利用特殊技术 交换数据一样 在这方面就取决于 开发者的意愿和配件的功能 例如 你的配件本身 已经支持蓝牙功能 这会给你一些先天的优势 因为你已经可以利用现在的蓝牙系统 做到数据交换的基本需要 如果你的配件已经连接到了当地网络 或者已经稳定安全地连接到网络上 也已经创造了一些有利因素 这可以让你通过程序 与配件之间的传送 与接收数据功能 为我们打开下一步
我们回到之前 说到我们要启动一个会话 以推动在两部iPhone之间执行的程序 我们创建了一个近距离对点设定 要为一件配件启动一个会话 我们就有需要创建一个 近距离配件设定
这是在iOS15系统内 一个新的NI设定 为了把一个配件设定实例化 我们有需要向它提供一些设定数据 向框架描述 它会接收的配件 这一特别的格式 被称为配件设定数据 可是 我们应该如何 取得这些设定数据? 这一个特别的格式又是什么呢? U1芯片相容的超宽带硬件 就好像你可以从一些 受认证的科技供应商所取得的一样 它会清楚如何能够根据要求 产生设定数据 这指在配件上 所执行的程序代码 会需要产生此数据 并发送到你的程序 和你的数据通道 就以其中一个程序代码为例 如此即可利用从配件所得到的数据 把一个近距离配件设定实例化 我们先假设setupAccessory 是一个我写入程序的协助方法 每当我要从配件中得到 配件设定数据 在我的程序内都会有一组逻辑 带它到这一个功能 也同时附带着配件的名称 到这一步 我可以通过 利用我从配件接收到的数据 创建一个NI近距离配件设定 你们或许会发现 我在一个do-catch语句内 建立了我的设定 我这样做是因为假如 我所接受的数据是某种程度的错误 那么NI设定的Init 就会建立一个特例 不过 如果设定对象被 成功地创建出来 即指我从配件那接收的数据 是在一个合适的格式 又可以被使用 最后 创建设定的原因 就是用它去执行会话 不过 在此之前 这里有一个好机会 让我去 缓存一些有用的数据 供未来使用 新的近距离配件设定 拥有为配件发现令牌的属性 所以此框架会自动地与配件拉上连系 同时 在我所界定的 setupAccessory函数中 我也输入了配件的名称 因此 在此阶段 在写下配件名称的同时 存下发现令牌也相当有用 因为 在之后 当我开始接收 有关此配件的一系列近距离对象更新 我就可以继续使用同一令牌及名称 去把更新过的配件相连 并多显示相关及丰富的用户界面
好! 那么我们从配件中 得到一个有效的设定数据 然后我们会用它去创建 一个配件设定对象 现在 我们可以开始与此配件互动
为了有效管理此一互动 我们需要一个NI会话实例 我们亦要设定会话的委托 为了启动会话 我们只需简单地 利用我们创建的配件设定对象 在会话上按“run”功能
就如同近距离互动需要 从配件取得设定数据 配件亦需要 从近距离互动取得设定数据 从而知道如何设定 这一些数据都需要以 名为“可享设定数据”的格式存在 当你利用一个配件设定 执行一个会话时 近距离互动会通过 一个委托的回调函数 向程序提供可享设定数据 正如我采用数据通道 去接收配件的设定数据一样 在此 我会以同样方式 向配件 发送可享设定数据 更实际地 我们一起来看看一个程序代码例子 可享设定数据已通过 did产生的委托回调函数到达程序 此委托回调函数是iOS 15的新功能
这可以是一个实际上 在程序有机会出现的回调函数 框架提供可享设定数据 也同时指出应该往哪一个配件走 当你正在与多个配件互动时 这就会十分有用 你应该尽快计划通过数据通道 向配件发送数据 一般来说 管理与不同配件的数据连接 可以有不同的方式 一切都要看实用情况 简单来说 假设在我的程序结构中 我选择了与我所有的互动配件 保持一个独立的数据连接 为了保持我的程序代码整齐不紊 我界定了一个协助函数 向我提供 我所提供的近距离对象的连接 当我得到连接的相关信息 我就会利用它立即向配件 发送可享设定数据 将程序优化十分重要 这让可享设定数据可以 以最少延迟的速度发送到配件上 假如可享设定数据 不能以最快速度发送 你的会话就有可能因此过期 与配件的会话过期 将会通过did移除委托回调函数 传递到程序上 让我们一同看看 应该如何处理这种情况
当近距离互动向我 展示一个did移除回调函数 并明确显示在荧光幕上 我会第一时间按“reason”参数 如果原因是过期 那么我可以有理由相信 配件仍然在附近 我可以尝试重新与它互动
为了决定是否与此配件 进入一个“重试流程” 我界定了一个协助函数 此函数将包括特定逻辑 帮助我作出决定 你们可以想象以下情景 “我有多少次重新尝试 却失败而回?” 或者“配件是否正在 告诉我它已经停止运作?” 又或者其他会影响决定的相类似疑问
如果我决定重试 我要做的就是重新以相同的设定 执行会话 请谨记 缓存的设定 只会在与配件会话仍未终结时 维持有效 一旦会话终结 我便需要重新走过一样的流程 正如第一次创建 及推动会话一样 请谨记 与配件的会话 是程序代码在配件问题上执行 所需要处理的 处理方式有许多 一切都视应用情况而定
好 你发送了可享设定数据到你的配件上 你也有逻辑去处理一些可能的重试 下一步是什么? 正如配件设定数据一样 在配件内的U1-相容硬件 在你的配件程序代码向它提供 可享设定数据时 它会自动知道 下一步应该如何走
所以 当程序代码在配件上执行 接收到数据 它需要如实地 并尽快地 向超宽带硬件提供这数据 你们或许会问 配件内的超宽带硬件是 如何产生或者利用设定数据的? 配件设定数据 和可享设定数据 都以我们早前在今年春天 所出版的文件来界定 此文件的重心是 芯片组及模块生产商 内容主要包括 建立超宽带的方法 和与iPhone内的U1互相操作 的工业标准
在各芯片生产商 所强调的互操作性以外 我们也发报了一些 与配件生产有关的详情 如果你希望建立一个拥有 超宽带的配件 而你又希望与它 通过程序内的 近距离互动框架进行互动 此文件就很合适你 你会在开发者网站找到它 连同其他相关材料 帮助你开始 让我们重新出发 我们刚刚通过数据通道 向配件发送了可享设定数据 现在让我们看看 当配件上的程序代码接收了它 在将它提供到 超宽带硬件上的时候 会发生什么事
接受了可享设定数据后 配件上的超宽带硬件 会立刻开始执行 适当的设定 与程序内的NI会话互动 当配件与iPhone都执行你的程序 而在互相接近时 会话会为程序 提供一系列的近距离对象更新 更新包含对象的距离 以及 在某些情况下 方向 你甚至可以同时间与多个配件互动 需要的是为每一个配件创建 及执行会话 视配件的硬件功能而定 你也可以在配件的程序代码执行上 得到接近相似的更新 一旦你从框架 得到了近距离对象的更新 你应该怎么做? 做个小小提醒 我们希望建立的是一个体验 当用户的距离较远时 程序与配件 便会启动功能A 当用户的距离较近时 便会启动功能B 一起来看看程序代码样本 向大家展示应该如何 通过你们iOS程序 近距离对象更新去实践这一部分
当程序与配件的会话 正在执行时 有关配件的更新会 通过did更新委托回调函数 送到会话的委托 首先 我会收集 一个近距离对象的数据 而框架会为此向我提供更新 其次 我会创建一个 带有对象的距离本地变量 而框架会以米作为显示单位 之后 我会把这些数据 提供予我在程序内建立的协助函数 我把它称为getSmoothedDistance 我把此函数在程序内界定出来 以协助我应对距离的 快速改变 例如 在一些情况下 当用户 做出一些突然的移动 又或者他们偶然地站在 区域之间的界线上 最后 我也可以检查 用户与配件的距离 会否超过预计的临界点 在此 我可以选择启动功能A 或功能B 视用户的现在位置而定
如果你有兴趣学习更多有关于 在设备之间的方向及距离上的 设计体验 欢迎收看今年的WWDC讲座 “空间互动的设计”
那么 一起来总结一下本节
我们谈论过新的许可模式 如何容许你的程序在进行时 有权限使用近距离互动
我们也深入了解了 近距离互动的第三者配件 以及需要用什么API 去为自己的配件建立一个空间互动 我们也讨论了可以 从提供兼容技术的供应商方面 取得第三者开发者工具包 以及可以立刻让开发项目 马上展开开发工作的 iOS程序代码样本 所以 各位也试试 开始进行实验 并原型设计你们的应用品
当你们准备将超宽带 迎接到你们的配件时 欢迎在Apple开发人员网页 阅读及寻找相关详细文件 这就是本年度的近距离互动更新 感谢你们的参与 希望本节对你们有帮助 也包含了你所需要的信息 好让你们开始开发一些 特别的程序及配件 [背景音乐]
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。