iOS UWB——NI框架部分类

前文介绍iOS中NI框架的实现流程以及简单的应用示例,本文中针对NI框架中的部分类以及相关会话生命周期管理函数进行了简单的介绍。

NI框架关键类

Class NISession

swift 复制代码
class NISession : NSObject

概述

NISession类是整个Nearby Interaction类的核心,所有会话的生成都需要先实例化一个NISession类的对象,该类的实例化对象与用户通过NISessionDelegate协议与用户进行交互。每个NISession对象仅能和一个配对设备发起UWB会话,如果要和多个设备发起会话则需要分别为每一个配对设备实例化一个NISession对象来发起会话。

主要类成员

· var discoveryToken
swift 复制代码
class NIDiscoveryToken : NSObject
@NSCopying var discoveryToken: NIDiscoveryToken? { get }

discoveryToken为一个设备的唯身份标识符,Nearby Interaction根据此Token来确定与框架会话的设备的身份,该Token的数值在NISession对象被建立的时候由框架生成,框架在一个UWB会话开始之前通过与配对设备共同加入的网络将此Token发送给配对设备。

· var configuration
swift 复制代码
@NSCopying var configuration: NIConfiguration? { get }

由框架生成的关于一个特定设备的配置参数类,由框架提供的方法生成。

· func run(_)
swift 复制代码
func run(_ configuration: NIConfiguration)

run函数将启动UWB会话,其输入参数为一个NIConfiguration类,NIConfiguration类根据配件OOB交互信息唯一生成,并根据此NIConfiguration参数确定开启与特定设备的会话。

· var delegate
swift 复制代码
weak var delegate: NISessionDelegate? { get set }

Nearby Interaction框架与用户交互的协议,实现session等回调函数处理UWB会话数据。

· func pause()
swift 复制代码
func pause()

暂停发送具体和角度信息给配对设备,暂停后可重新调用run(:)函数恢复会话,但若暂停时间过久,框架则可能会调用 session(:didRemove:reason:)回调函数提示会话中断,并在NINearbyObject.RemovalReason中提示超时错误。

· func invalidate()
swift 复制代码
func invalidate()

终止UWB会话,Nearby Interaction会直接调用session(_:didRemove:reason:)方法终止会话。

Session生命周期相关回调

会话挂起,当app进入后台,将调用该回调。

swift 复制代码
optional func sessionWasSuspended(_ session: NISession)

当挂起结束之后,将触发Ended回调,此后可以继续使用Session。

swift 复制代码
optional func sessionSuspensionEnded(_ session: NISession)

Class NINearbyObject

swift 复制代码
class NINearbyObject : NSObject

概述

NINearbyObject是一个测距会话中,每一个具体设备的定位信息,是所有位置信息的封装类。

主要类成员

· var discoveryToken
swift 复制代码
@NSCopying var discoveryToken: NIDiscoveryToken { get }

与NISession类中的discoveryToken成员作用相同,为特定设备的唯一标识

· var distance
swift 复制代码
var distance: Float? { get }

存放一个测距会话中的距离信息,单位为米,如果没有获取到距离信息则值为nil

· var direction
swift 复制代码
var direction: simd_float3? { get }

存放一个测距会话中的方位信息,是一个三维的坐标值表示的矢量,如果没有获取到方位信息则值为nil

· enum RemovalReason
swift 复制代码
enum RemovalReason : Int, @unchecked Sendable

一个表明会话断开原因的枚举值,其值为表明配对设备终止会话的peerEnded,默认值为1;以及表明会话超时的timeout,默认值为0。

相关推荐
虎王物联4 小时前
工业Modbus TCP协议深度实战:STM32 HAL库实现从机通信与数据上云
stm32·物联网·网络协议·tcp/ip·嵌入式
Zentceh6 小时前
AI-ISP在夜视机芯中的应用:从传统ISP到PixelClean全彩夜视的进化
人工智能·科技·算法·计算机视觉·车载系统·视频·智能硬件
Patrick_Wilson7 小时前
iOS Safari Clipboard API 权限弹窗问题
前端·ios·safari
虎王物联8 小时前
PHP实现MQTT消息处理:物联网设备数据接收与指令下发
android·物联网·php
_瑞10 小时前
APM_符号化原理
ios·汇编语言
2501_9139817811 小时前
2026年智能仪表物联网发展趋势:技术创新、通信方案与选型指南
物联网·智能仪表
博纬智能RFID11 小时前
RFID读写器与标签在工业产线中的深度应用
物联网
花椒技术11 小时前
不是跑通一次 Demo:花椒 QA 怎样把真机 UI 自动化做成回归流程
ios·单元测试·测试
DolphinDB12 小时前
从自主可控到安全可靠:DolphinDB 如何成为物联网企业的数据底座选择
物联网·时序数据库·dolphindb
2501_9159184114 小时前
Swift IDE 有哪些?按平台和需求选择Swift 开发工具
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程