区块链技术博客
www.b2bchain.cn

【WWDC21 10165】探索与第三方硬件的近距离交互求职学习资料

本文介绍了【WWDC21 10165】探索与第三方硬件的近距离交互求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

作者:大猫,iOS开发

审核:

LoneyIsError,中移(苏州)软件技术有限公司 研发工程师

Damonwong,iOS 开发,老司机技术周报编辑,就职于淘系技术部

基于 Session 10165 探索与第三方硬件的近距离交互

2021 年 4 月的发布会上,AirTag 横空出世,从此妈妈再也不用担心我找不到钥匙了。UWB 这项技术也慢慢走进了人们的视野。现在不仅仅是只有官方的钥匙扣了。第三方的硬件授权设备也能与苹果进行交互了。
本文是讲了苹果在 Nearby Interaction 框架上的更新,全文主要分为三部分:
首先带你快速的了解一下之前是如何使用 Nearby Interaction 框架的,然后讲述在 iOS 15 上关于用户访问权限的改进,最后根据最新的 api 来实现一个简单的 demo。

快速回顾一下如何使用 Nearby Interaction框架

class ViewController: UIViewController, NISessionDelegate {      override func viewDidLoad() {         super.viewDidLoad()         let token = _token         let niSession = NISession()         niSession.delegate = self         niSession.run(NINearbyPeerConfiguration(peerToken: token))     }     func session(_ session: NISession, didUpdate nearbyObjects: [NINearbyObject]){         nearbyObjects.forEach { (niNearbyObject) in             print(niNearbyObject.distance!);             print(niNearbyObject.direction!);         }     } }

如何在两个手机之间建立联系呢?首先创建一个 NISessions 实例,然后在代码中遵守 NISessionDelegate 协议,在 session 实例的 run 函数中需要传入一个 NIConfiguration 的子类做配置对象。如果想要在两个 iPhone 之间建立联系,可以使用 NINearbyPeerConfiguration 做参数,但是在 NINearbyPeerConfiguration 的初始化中需要知道对方的 token,这个 token 可以通过网络进行传输,当你准备好这一切的时候,Nearby Interaction 将开始为程序提供 NearbyObject 更新流,每个更新包含到附近设备的距离和方向(可选)。如果想要继续深入的了解这个库的 API,可以去看去年演讲 “Meet Nearby Interaction”。

用户权限上的改进

在 iOS 14 上的的 Nearby Interaction 的权限流程是这样的,当你的 App 在一个新的生命周期中,第一次创建一个 NISession 会话的时候会展示弹窗,弹窗的样式如下图,但由于此权限是一次性的,因此在某些情况下也可能导致展示多次弹窗。

【WWDC21 10165】探索与第三方硬件的近距离交互

今年在 iOS 15 上对权限进行了改进,弹窗如下图。这是 iOS 15 中新的“附近交互”权限提示。看起来很相似,但却和之前的权限授予流程有以下不同:

【WWDC21 10165】探索与第三方硬件的近距离交互

  • 提示时机:系统会在应用程序第一次运行 NISession 时自动显示权限提示。因此确保运行 NISession 的时间与用户想要使用这个功能的时间保持一致,这样您的用户就很容易理解为什么您需要这个权限。
  • 提示的选项:让我们仔细看看提示上的新选项。新的“确定”选项可在应用程序使用时授予您的应用程序权限。无论用户接受还是拒绝您的应用使用附近交互的请求,权限提示都不会再次显示。
  • 新的权限设置位置:从 iOS 15 开始,使用 Nearby Interaction 的应用将出现在“设置”中。因此,如果用户改变主意,他们可以转到“设置”应用并更改应用的“附近互动”访问权限。应确保在开发应用时针对权限的变更进行测试。

总结一下新的 Nearby Interaction 用户权限模型。在弹窗中点击 Allow 后,您的应用将获得在应用使用过程中使用 Nearby Interaction 的持久权限。弹窗上将显示一个使用说明字符串,在 Info.plist 中配置。在这个配置中要简洁明了的解释您在应用程序中访问附近的设备可以提供那些有趣的能力。在第一次也是最后一次出现提示后,您的应用的名称和图标将出现在“设置”中,这意味着用户可以随时更改您的应用的权限状态。当应用程序没有足够的权限使用 Nearby Interaction 时, NISessions 所有的功能都会失效。因此,如果应用程序中的关键功能依赖于对附近设备的访问,请务必向用户清楚地解释这一点,并在适当的时候引导他们使用“设置”去打开配置权限。

从一个简单的需求入手讲一下新的 API

没有业务场景的新特性都是瞎逼逼,下面将从一个实用的业务场景出发来介绍如何使用 Nearby Interaction API 与第三方配件一起工作。

想象一下,在你的设备周围定义了一个半径为 1.5 米的区域和另外一个半径为 3 米的更大的区域,当用户进入较大的区域的时候您希望启动功能 A,当用户进入较小的区域的时候你期望启动功能 B,如何使用 Nearby Interaction 来实现这一个功能?

part1 确保硬件设备与程序之间具备数据通道

Nearby Interaction 需要硬件与应用程序之间具有数据交换的能力。至于采用何种技术实现数据交换,这完全取决于硬件设备具有什么样的能力。假设设备已经支持蓝牙。因为您将能够利用现有的蓝牙功能来进行数据交换。如果硬件设备连接到了本地网络或互联网中,完全可以使用网络进行数据交换,在应用程序和配件之间可以互相传输数据是下一步需要执行的操作的必要条件。

part2 基于 token 创建 NearbyAccessoryConfiguration

上面的回顾中我们在了两部 iPhone 之间启动会话时创建了 NearbyPeerConfiguration。如果要开始与硬件的会话,需要创建 NearbyAccessoryConfiguration。这是 iOS 15 中新的 NIConfiguration 类型。如果要实例化一个 NearbyAccessoryConfiguration。需要为它提供一些配置数据,系统接受的一种特定的用来描述这个设备的数据格式。但是我们如何获得这个配置数据,这个特定的格式是什么?与 U1 兼容的硬件设备(认证过的供应商)将知道如何根据请求生成此配置数据。这意味着您在硬件设备本身上运行的代码需要生成此数据然后通过 part1 的数据通道将其发送到您的应用程序。代码如下:
“`Swift
private func setupAccessory(_ configData: Data, name: String) {
do {
config = try NINearbyAccessoryConfiguration(data: configData)
} catch let error {

作者:大猫,iOS开发

审核:

LoneyIsError,中移(苏州)软件技术有限公司 研发工程师

Damonwong,iOS 开发,老司机技术周报编辑,就职于淘系技术部

基于 Session 10165 探索与第三方硬件的近距离交互

2021 年 4 月的发布会上,AirTag 横空出世,从此妈妈再也不用担心我找不到钥匙了。UWB 这项技术也慢慢走进了人们的视野。现在不仅仅是只有官方的钥匙扣了。第三方的硬件授权设备也能与苹果进行交互了。
本文是讲了苹果在 Nearby Interaction 框架上的更新,全文主要分为三部分:
首先带你快速的了解一下之前是如何使用 Nearby Interaction 框架的,然后讲述在 iOS 15 上关于用户访问权限的改进,最后根据最新的 api 来实现一个简单的 demo。

快速回顾一下如何使用 Nearby Interaction框架

class ViewController: UIViewController, NISessionDelegate {      override func viewDidLoad() {         super.viewDidLoad()         let token = _token         let niSession = NISession()         niSession.delegate = self         niSession.run(NINearbyPeerConfiguration(peerToken: token))     }     func session(_ session: NISession, didUpdate nearbyObjects: [NINearbyObject]){         nearbyObjects.forEach { (niNearbyObject) in             print(niNearbyObject.distance!);             print(niNearbyObject.direction!);         }     } }

如何在两个手机之间建立联系呢?首先创建一个 NISessions 实例,然后在代码中遵守 NISessionDelegate 协议,在 session 实例的 run 函数中需要传入一个 NIConfiguration 的子类做配置对象。如果想要在两个 iPhone 之间建立联系,可以使用 NINearbyPeerConfiguration 做参数,但是在 NINearbyPeerConfiguration 的初始化中需要知道对方的 token,这个 token 可以通过网络进行传输,当你准备好这一切的时候,Nearby Interaction 将开始为程序提供 NearbyObject 更新流,每个更新包含到附近设备的距离和方向(可选)。如果想要继续深入的了解这个库的 API,可以去看去年演讲 “Meet Nearby Interaction”。

用户权限上的改进

在 iOS 14 上的的 Nearby Interaction 的权限流程是这样的,当你的 App 在一个新的生命周期中,第一次创建一个 NISession 会话的时候会展示弹窗,弹窗的样式如下图,但由于此权限是一次性的,因此在某些情况下也可能导致展示多次弹窗。

【WWDC21 10165】探索与第三方硬件的近距离交互

今年在 iOS 15 上对权限进行了改进,弹窗如下图。这是 iOS 15 中新的“附近交互”权限提示。看起来很相似,但却和之前的权限授予流程有以下不同:

【WWDC21 10165】探索与第三方硬件的近距离交互

  • 提示时机:系统会在应用程序第一次运行 NISession 时自动显示权限提示。因此确保运行 NISession 的时间与用户想要使用这个功能的时间保持一致,这样您的用户就很容易理解为什么您需要这个权限。
  • 提示的选项:让我们仔细看看提示上的新选项。新的“确定”选项可在应用程序使用时授予您的应用程序权限。无论用户接受还是拒绝您的应用使用附近交互的请求,权限提示都不会再次显示。
  • 新的权限设置位置:从 iOS 15 开始,使用 Nearby Interaction 的应用将出现在“设置”中。因此,如果用户改变主意,他们可以转到“设置”应用并更改应用的“附近互动”访问权限。应确保在开发应用时针对权限的变更进行测试。

总结一下新的 Nearby Interaction 用户权限模型。在弹窗中点击 Allow 后,您的应用将获得在应用使用过程中使用 Nearby Interaction 的持久权限。弹窗上将显示一个使用说明字符串,在 Info.plist 中配置。在这个配置中要简洁明了的解释您在应用程序中访问附近的设备可以提供那些有趣的能力。在第一次也是最后一次出现提示后,您的应用的名称和图标将出现在“设置”中,这意味着用户可以随时更改您的应用的权限状态。当应用程序没有足够的权限使用 Nearby Interaction 时, NISessions 所有的功能都会失效。因此,如果应用程序中的关键功能依赖于对附近设备的访问,请务必向用户清楚地解释这一点,并在适当的时候引导他们使用“设置”去打开配置权限。

从一个简单的需求入手讲一下新的 API

没有业务场景的新特性都是瞎逼逼,下面将从一个实用的业务场景出发来介绍如何使用 Nearby Interaction API 与第三方配件一起工作。

想象一下,在你的设备周围定义了一个半径为 1.5 米的区域和另外一个半径为 3 米的更大的区域,当用户进入较大的区域的时候您希望启动功能 A,当用户进入较小的区域的时候你期望启动功能 B,如何使用 Nearby Interaction 来实现这一个功能?

part1 确保硬件设备与程序之间具备数据通道

Nearby Interaction 需要硬件与应用程序之间具有数据交换的能力。至于采用何种技术实现数据交换,这完全取决于硬件设备具有什么样的能力。假设设备已经支持蓝牙。因为您将能够利用现有的蓝牙功能来进行数据交换。如果硬件设备连接到了本地网络或互联网中,完全可以使用网络进行数据交换,在应用程序和配件之间可以互相传输数据是下一步需要执行的操作的必要条件。

part2 基于 token 创建 NearbyAccessoryConfiguration

上面的回顾中我们在了两部 iPhone 之间启动会话时创建了 NearbyPeerConfiguration。如果要开始与硬件的会话,需要创建 NearbyAccessoryConfiguration。这是 iOS 15 中新的 NIConfiguration 类型。如果要实例化一个 NearbyAccessoryConfiguration。需要为它提供一些配置数据,系统接受的一种特定的用来描述这个设备的数据格式。但是我们如何获得这个配置数据,这个特定的格式是什么?与 U1 兼容的硬件设备(认证过的供应商)将知道如何根据请求生成此配置数据。这意味着您在硬件设备本身上运行的代码需要生成此数据然后通过 part1 的数据通道将其发送到您的应用程序。代码如下:
“`Swift
private func setupAccessory(_ configData: Data, name: String) {
do {
config = try NINearbyAccessoryConfiguration(data: configData)
} catch let error {

作者:大猫,iOS开发

审核:

LoneyIsError,中移(苏州)软件技术有限公司 研发工程师

Damonwong,iOS 开发,老司机技术周报编辑,就职于淘系技术部

基于 Session 10165 探索与第三方硬件的近距离交互

2021 年 4 月的发布会上,AirTag 横空出世,从此妈妈再也不用担心我找不到钥匙了。UWB 这项技术也慢慢走进了人们的视野。现在不仅仅是只有官方的钥匙扣了。第三方的硬件授权设备也能与苹果进行交互了。
本文是讲了苹果在 Nearby Interaction 框架上的更新,全文主要分为三部分:
首先带你快速的了解一下之前是如何使用 Nearby Interaction 框架的,然后讲述在 iOS 15 上关于用户访问权限的改进,最后根据最新的 api 来实现一个简单的 demo。

快速回顾一下如何使用 Nearby Interaction框架

class ViewController: UIViewController, NISessionDelegate {      override func viewDidLoad() {         super.viewDidLoad()         let token = _token         let niSession = NISession()         niSession.delegate = self         niSession.run(NINearbyPeerConfiguration(peerToken: token))     }     func session(_ session: NISession, didUpdate nearbyObjects: [NINearbyObject]){         nearbyObjects.forEach { (niNearbyObject) in             print(niNearbyObject.distance!);             print(niNearbyObject.direction!);         }     } }

如何在两个手机之间建立联系呢?首先创建一个 NISessions 实例,然后在代码中遵守 NISessionDelegate 协议,在 session 实例的 run 函数中需要传入一个 NIConfiguration 的子类做配置对象。如果想要在两个 iPhone 之间建立联系,可以使用 NINearbyPeerConfiguration 做参数,但是在 NINearbyPeerConfiguration 的初始化中需要知道对方的 token,这个 token 可以通过网络进行传输,当你准备好这一切的时候,Nearby Interaction 将开始为程序提供 NearbyObject 更新流,每个更新包含到附近设备的距离和方向(可选)。如果想要继续深入的了解这个库的 API,可以去看去年演讲 “Meet Nearby Interaction”。

用户权限上的改进

在 iOS 14 上的的 Nearby Interaction 的权限流程是这样的,当你的 App 在一个新的生命周期中,第一次创建一个 NISession 会话的时候会展示弹窗,弹窗的样式如下图,但由于此权限是一次性的,因此在某些情况下也可能导致展示多次弹窗。

【WWDC21 10165】探索与第三方硬件的近距离交互

今年在 iOS 15 上对权限进行了改进,弹窗如下图。这是 iOS 15 中新的“附近交互”权限提示。看起来很相似,但却和之前的权限授予流程有以下不同:

【WWDC21 10165】探索与第三方硬件的近距离交互

  • 提示时机:系统会在应用程序第一次运行 NISession 时自动显示权限提示。因此确保运行 NISession 的时间与用户想要使用这个功能的时间保持一致,这样您的用户就很容易理解为什么您需要这个权限。
  • 提示的选项:让我们仔细看看提示上的新选项。新的“确定”选项可在应用程序使用时授予您的应用程序权限。无论用户接受还是拒绝您的应用使用附近交互的请求,权限提示都不会再次显示。
  • 新的权限设置位置:从 iOS 15 开始,使用 Nearby Interaction 的应用将出现在“设置”中。因此,如果用户改变主意,他们可以转到“设置”应用并更改应用的“附近互动”访问权限。应确保在开发应用时针对权限的变更进行测试。

总结一下新的 Nearby Interaction 用户权限模型。在弹窗中点击 Allow 后,您的应用将获得在应用使用过程中使用 Nearby Interaction 的持久权限。弹窗上将显示一个使用说明字符串,在 Info.plist 中配置。在这个配置中要简洁明了的解释您在应用程序中访问附近的设备可以提供那些有趣的能力。在第一次也是最后一次出现提示后,您的应用的名称和图标将出现在“设置”中,这意味着用户可以随时更改您的应用的权限状态。当应用程序没有足够的权限使用 Nearby Interaction 时, NISessions 所有的功能都会失效。因此,如果应用程序中的关键功能依赖于对附近设备的访问,请务必向用户清楚地解释这一点,并在适当的时候引导他们使用“设置”去打开配置权限。

从一个简单的需求入手讲一下新的 API

没有业务场景的新特性都是瞎逼逼,下面将从一个实用的业务场景出发来介绍如何使用 Nearby Interaction API 与第三方配件一起工作。

想象一下,在你的设备周围定义了一个半径为 1.5 米的区域和另外一个半径为 3 米的更大的区域,当用户进入较大的区域的时候您希望启动功能 A,当用户进入较小的区域的时候你期望启动功能 B,如何使用 Nearby Interaction 来实现这一个功能?

part1 确保硬件设备与程序之间具备数据通道

Nearby Interaction 需要硬件与应用程序之间具有数据交换的能力。至于采用何种技术实现数据交换,这完全取决于硬件设备具有什么样的能力。假设设备已经支持蓝牙。因为您将能够利用现有的蓝牙功能来进行数据交换。如果硬件设备连接到了本地网络或互联网中,完全可以使用网络进行数据交换,在应用程序和配件之间可以互相传输数据是下一步需要执行的操作的必要条件。

part2 基于 token 创建 NearbyAccessoryConfiguration

上面的回顾中我们在了两部 iPhone 之间启动会话时创建了 NearbyPeerConfiguration。如果要开始与硬件的会话,需要创建 NearbyAccessoryConfiguration。这是 iOS 15 中新的 NIConfiguration 类型。如果要实例化一个 NearbyAccessoryConfiguration。需要为它提供一些配置数据,系统接受的一种特定的用来描述这个设备的数据格式。但是我们如何获得这个配置数据,这个特定的格式是什么?与 U1 兼容的硬件设备(认证过的供应商)将知道如何根据请求生成此配置数据。这意味着您在硬件设备本身上运行的代码需要生成此数据然后通过 part1 的数据通道将其发送到您的应用程序。代码如下:
“`Swift
private func setupAccessory(_ configData: Data, name: String) {
do {
config = try NINearbyAccessoryConfiguration(data: configData)
} catch let error {

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 【WWDC21 10165】探索与第三方硬件的近距离交互求职学习资料
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们